Fix shifts
Always generate ifn wrappers for non-pointer receivers

We were treating functions that take a non-pointer receiver
whose size is <= than a pointer as being directly usable as
the "ifn" (interface function pointer) member of runtime types.
This is frequently invalid, at least for cdecl, as the registers
used depend on the type of the receiver/parameter (e.g., wildly
different for floating point and integers.)

Now instead, we generate a wrapper function if the receiver is
not a pointer, and fits inside a pointer. The wrapper takes an
*i8, and coerces it into the real receiver type and calls the
wrapped function with it and any remaining arguments.
cmd/llgo-build: add -run flag

"llgo-build -run <package>" will build the package,
and (assuming it's a command), run the resulting
program. The binary will be discarded afterwards.