Macros!

Adds support for macros (the <kbd>q</kbd> and <kbd>@</kbd> commands), with some general improvements along the way:

* Introduces a `Vimulator.Registers` object which gives us a proper interface for interacting with registers, instead of just reading and writing arbitrary properties to an `Object`.
* Introduces `keyPressObservers` to `Vimulator.Base` so that the macro recoding code can track key presses.