add kernel_abi.h header

This header replicates libc/kernel datastructures such that they can be
templated with member datatypes appropriate to several different kinds
of CPU architectures.  Doing this means that we can refer to how x86-64
defines, say, |struct msghdr| and how x86 defines |struct msghdr|
without fighting with C/C++'s idea that there must be One And Only One
|struct msghdr|.
make |struct msghdr| uses use rr::x86_arch::msghdr instead

This change is the first of several to show how the new structures in
the rr namespace would be used.  Several more structures remain to be
converted, and the hard-coded x86_arch template instantiations would
need to be "pushed out": their containing functions templatized properly
over an architecture, and possibly the callers of said functions, and so
forth.

I'm not keen on the explicit instantiations needed in util.cc, but it
seemed that moving those into the util.h header might be too much of a
mess.
make |struct sockaddr| and |socklen_t| use rr::x86_arch for types
make |struct pollfd| use x86_arch::pollfd for types
make |struct timespec| use x86_arch::timespec for types

The nanosleep fiddling in rec_prepare_restart_syscall may need this same
substitution treatment.
make |struct epoll_event| use x86_arch::epoll_event for types
make |siginfo_t| use x86_arch::siginfo_t for types
make |struct rusage| uses use x86_arch::rusage
convert accept{,4}_args to use x86_arch versions
convert recvfrom_args to use x86_arch versions
convert recvmsg_args to use x86_arch versions
convert mmap_args_struct to use x86_arch::mmap_args
convert recv_args to use x86_arch versions
use proper types for getsockname_args
use proper types for getsockopt_args
use proper types for socketpair_args