Add entry points for interacting with Go

A "ffi_go_closure" is intended to be compatible with the
function descriptors used by Go, and ffi_call_go sets up
the static chain parameter for calling a Go function.

The entry points are disabled when a backend has not been
updated, much like we do for "normal" closures.
Add ffi_cfi.h

Have one copy of the HAVE_AS_CFI_PSEUDO_OP code
to share between all backends.
x86-64: Support go closures

Dumps all of the hand-coded unwind info for gas generated.  Move jump
table data into .rodata.  Adjust ffi_call_unix64 to load the static
chain.  Split out sse portions of ffi_closure_unix64 to
ffi_closure_unix64_sse rather than test cif->flags at runtime.
win64: Rewrite

It's way too different from the 32-bit ABIs with which it is
currently associated. As seen from all of the existing XFAILs.
win64: Remove support from ffi.c
x86_64: Fixups for x32
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
testsuite: Fix return_complex2 vs excessive precision

Use the previously computed rc2 to validate, rather than
recomputing a floating point result with excess precision.
testsuite: Add two dg-do run markers

Caught by clang warning about unused -L parameter.
x86: Tidy ffi_abi

The x86_64 unix port only handles one ABI; don't define all of the
other symbols.  The UNIX64 symbol retains the same value.

The i386 ports ought to have the same symbols, even if we can't yet
unify the values without incrementing the libffi soname.
x86: Remove some conditional compilation

Removal of ifdefs made possible to due to ffi_abi unification.
x86: Force FFI_TYPE_LONGDOUBLE different from FFI_TYPE_DOUBLE

There are few abis that set double = long double.  Eliminate the
conditional compilation and let this code simply be unused there.
x86: Convert to gas generated unwind info
x86: Rewrite ffi_call

Decouple the assembly from FFI_TYPE_*.  Merge prep_args with ffi_call,
passing the frame and the stack to the assembly.

Note that this patch isn't really standalone, as this breaks closures.
x86: Rewrite closures

Move everything into sysv.S, removing win32.S and freebsd.S.
Handle all abis with a single ffi_closure_inner function.
Move complexity of the raw THISCALL trampoline into assembly
instead of the trampoline itself.
Only push the context for the REGISTER abi; let the rest
receive it in a register.
x86: Add support for Complex
x86: Add support for Go closures
x86: Use win32 name mangling for fastcall functions
aarch64: Fix non-apple compilation