Pass pointer to return argument

The test now compiles, but fails at runtime due to the type-check
Move push from precall to postcall
Enforce that returned arguments must be invisible

This is the minimum set of modifications to avoid counting them in narg.