Function calls don't retain arguments at all

Also check correct retain on arguments when used.
v_freeup_regp returns a retained value
Store extended type in impl_cast_load()