internal/syscall.h: use a macro for the syscall args casts

this allows syscall_arch.h to define the macro __scc if special
casting is needed, as is the case for x32, where the actual syscall
arguments are 64bit, but, in case of pointers, would get sign-extended
and thus become invalid.
internal/syscall.h: add syscall_arg_t macro

some 32-on-64 archs require that the actual syscall args be long long.
in that case syscall_arch.h can define syscall_arg_t to whatever it needs
and syscall.h picks it up.
all other archs just use long as usual.
use syscall_arg_t type for syscall prototypes in pthread code
sys/sem.h: cheat and make all longs use time_t instead

most of the members should be time_t anyway, and time_t has the
correct semantics for "syscall_long", so it works on all archs, even x32.
sys/shm.h: move arch specific structs to bits/
import vanilla x86_64 code as x32
x32 port (diff against vanilla x86_64)
configure: recognize x86_64-x32 and x32

x32 is the internal arch name, but glibc uses x86_64-x32.
there doesn't exist a specific triple for x32 in gcc and binutils.
you're supposed to build your compiler for x86_64 and configure
it with multilib support for "mx32".

however it turns out that using a triple of x86_64-x32 makes
gcc and binutils pick up the right arch (they detect it as x86_64)
and allows us to have a unique triple for cross-compiler toolchains.
configure: suppress bogus pointer-int cast warnings
mostly-cosmetic fixups to x32 port merge