Gdb checkpoints

I think this is ready to land. @cgjones, please take a look if you have the time, there are some significant changes here.

I was able to override gdb's existing "checkpoint"/"delete checkpoint"/"restart" commands to use the new functionality. Hurrah!

This patch does not do anything to remove/readd breakpoints when creating checkpoints. gdb seems to remove all checkpoints while the program is stopped so it's not a problem. I've added assertions to verify that.

Checkpoint resumption is a bit slow for Firefox because gdb rescans all the shared libraries, reloads debugger scripts, etc on every "r". In the future we can improve this by identifying when gdb's internal ld-linux.so breakpoints were not hit between the current execution point and the destination checkpoint, and in that case just reset the program state. We'd update the "restart" command with logic to tell rr to try a "fast restart", and if that fails, fall back to "run c$N".