x86_64: Decouple return types from FFI_TYPE constants

We can better support structure returns, and as prep for
complex types.
x86_64: Add support for complex types