Remove start_hpc and just use reset_hpc instead.
Support instruction tracing over a range of events.
Move cpuid function to util.h/.cc and generalize it
Create ExtraRegisters and save/restore ExtraRegisters on exit from sigreturn syscall.

sigreturn and rt_sigreturn restore register state when a signal handler exits.
This state includes floating-point and SSE registers that rr normally doesn't
need to touch. rr needs to replay these state resets and currently doesn't,
causing divergence. This patch fixes the problem by recording the extra register
state on sigreturn/rt_sigreturn exit, and setting that state in the tracee
during replay.

Note that with this approach, rr doesn't actually need to know *which*
registers are saved/restored via sigreturn/rt_sigreturn. We just do a
wholesale reset of registers in the replay to the values they had in the
recording.
Ensure that register-clearing performed by the kernel when entering a signal handler is reproduced during replay.

I'm not sure why the kernel does this, but it definitely does clear FP/SSE
registers when entering a signal handler. The modified sigreturn
test clearly shows this. So rr needs to emulate this during replay. We simply
save the extra-register state in an EV_SIGNAL_HANDLER and restore that state
during replay.

This patch modifies the sigreturn test to dump register values in the signal
handler to check values on entry to the signal handler are consistent between
record and replay. It also modifies the sigreturn test to test x87 FP registers
as well as SSE registers.
checkpoint
checkpoint
cleanup
checkpoint
checkpoint
checkpoint
trivial
checkpoint
checkpoint - basic test passes
checkpoint - skeleton of revised control flow
checkpoint - "experimenter" controller mostly done
checkpoint - mostly working
checkpoint - all tests pass
checkpoint - syscall exec
checkpoint - syscall semantics