Fix bug in static assert. 2^5 will not fit in a 6-bit int.
Move supported_arch to types.h since we're going to use it almost everywhere.
Remove leftover kernel ABI stuff from types.h.
Expose arch() getter on Registers.
Move supported_arch out of the rr namespace for now.
Move implementation of syscallname back out of Task so we can call it when we only have an arch, not a Task.
Make Event dumping use the arch from Registers to disambiguate the syscall.

This fixes a major testsuite regression. breakpoint_overlap depends on
the syscall names being present in "rr dump".
Make update_sigaction and update_sigprocmask use registers from the current trace frame during replay.

Since during replay these are called before we process the syscall exit,
the real syscall result register doesn't have its post-exit value yet.

This is a pretty bad bug, since it means update_sigaction/sigprocmask
were doing nothing during replay, since the current value of %eax is -ENOSYS
between syscall entry and exit and update_sigaction/sigprocmask would interpret
that as a failed syscall which should be ignored. A later patch adds an assert
that Task::wait() is never called with Task::unstable==1, which catches this
bug. E.g. if ignored_async_usr1's syscall to ignore USR1 is dropped during
replay, then when SIGUSR1 is replayed we'll treat that as a
terminating signal in possibly_destabilizing_signal and mark the task group
as unstable; but as the task keeps on running, the next wait() on that task
will die with an assertion failure.
Task::kill should not wait for a task if it's in an unstable exit state.

The wait might hang.
Assert that Task::wait() is never called on unstable tasks (because it might deadlock).