Forwarded temporaries would never declare a temporary. Figure out all result types ahead of time so we can deal with those temporaries as well.
Bug: OpLoad fails when loading an interface struct directly, followed by OpCompositeExtract. This should be fixed, but not critical enough to block this PR.