x32: initial draft of port. do not use yet.

everything so far is just a 1:1 copy of the x86_64 code.
only the types in alltypes.h.in have been fixed so that inline asm
that uses uint64_t compiles correctly, additionally one function
in atomic.h has been fixed.

this is barely sufficient that the code compiles in --disable-shared
mode, but is of course completely unusable at this point.
x32: gcc's stddef.h wants a long as wchar_t
x32: use the right syscalls
x32: add thread code
x32 _start: pop into a 64bit reg removes argv from stack
x32: fix limits.h
x32: fix bits/stdint.h constants
x32: fix some bits headers
x32: fix hardcoded syscall numbers in asm
x32: fix some generic headers for x32
x32: speculative syscall changes
x32: got the syscall semantics right - all tests pass

the actual syscall functions need to take long long arguments, but return
long. the syscall macros must cast the arguments to unsigned long, other-
wise pointers will get sign-extended to 64bit and cause crashes.
x32: import x86_64 ldso asm
x32: fix dynlinker start code

we can't push and pop on x32 as that would take off 64 bit values
from our 32 bit array.
fixes argv.
x32: add vfork

i'm unsure whether the pops and pushes do harm, but it passes simple tests,
also those involving checking argv etc on the callee.