My main concern is that we're providing a false sense of security/correctness here. It seems to work with some return values, but will blow up randomly on values larger than the size of a pointer.

I'd at least like to make it consistently garbage if we go that route. Alternatively, couldn't this unbox `returnValue` with logic similar to `-rac_setArgument:atIndex:`.