Debugger checkpoints

### Features:

* Saves the runtime state every 100 events.
* Stepping forward works as usual
* Stepping back goes to the previous checkpoint and works back up to the current event location
* Hotswapping regenerates these checkpoints with the new code
* **It feels much faster**


#### Notes:
* If you have a lot of events, hotswapping will still take some time. The debugger has to step through all the events and make new checkpoints.
* Should we merge this into a feature branch of the debugger and then merge that into `debugger`?

 
#### Bugs:
* If you send a lot of keyboard events, pause, scrub, and continue, you will lose anywhere from 2-100 traced nodes. This is turning out to be harder than I thought to fix. 

I suspect the fix won't be big so let's review this code now. When I have the fix then we can check that diff and merge this in.
I need `tracePathInit` to know about the event counter used in `debuggerInit`. This counter also needs to be updated by the `debugModule` when it records a new event. If I passed an integer to `tracePathInit` it would get a copy of the number but I want everyone to use the same object. Javascript won't make a copy of the closure, it'll pass a reference. This way, we get a synchronized event counter.
I thought that since I'm making a closure, I should create the functions to operate on the synchronized event counter.

What would you recommend doing?