Update Interaction.Key to use dispatchers.

Created `Dispatcher.Keypress`, which calls callbacks when the user is moused over a target element.

`Interaction.Key` now uses `Dispatcher.Keypress`, and can take callbacks to be called on any keyCode. This change allows multiple `Interaction.Key`s to be attached to the same component.

API changes:
* `Interaction.Key.callback()` was removed in favor of `Interaction.Key.on()`, which allows the user to specify a key code to listen for.
* `Interaction.Key`'s constructor no longer takes in a key code.

Partly addresses #837 and #1209.
The dispatcher should only ever be constructed once. This is also why in `Abstract.Dispatcher` there's a `if (this._target)` check. Originally I had the `Dispatcher` be constructed in _anchor(), but that seems less safe.