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 syscall types use types from x86_arch instead
Make architecture-specific 'ptr' check that assigned values actually fit the word size.
More record_struct and restore_struct methods from utils to record/replay_syscall.