aarch64: Treat void return as not passed in registers

This lets us do less post-processing when there's no return value.
aarch64: Tidy up abi manipulation

Avoid false abstraction, like get_x_addr.  Avoid recomputing data
about the type being manipulated.  Use NEON insns for HFA manipulation.

Note that some of the inline assembly will go away in a subsequent patch.
aarch64: Merge prep_args with ffi_call

Use the trick to allocate the stack frame for ffi_call_SYSV
within ffi_call itself.
aarch64: Move return value handling into ffi_call_SYSV

This lets us pass return data directly to the caller of ffi_call
in most cases, rather than storing it into temporary storage first.
aarch64: Move return value handling into ffi_closure_SYSV

As with the change to ffi_call_SYSV, this avoids copying data
into a temporary buffer.
aarch64: Unify scalar fp and hfa handling

Since an HFA of a single element is exactly the same as scalar,
this tidies things up a bit.
aarch64: Remove aarch64_flags

This field was useless from the start, since the normal flags
field is available for backend use.
aarch64: Add support for complex types
aarch64: Move x8 out of call_context

Reduces stack size.  It was only used by the closure, and there
are available argument registers.
aarch64: Add support for Go closures
Rewrite win64 support

It's way too different from the 32-bit ABIs with which it is
currently associated. As seen from all of the existing XFAILs.
Remove win64 support from ffi.c