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.
In `Interaction.Key`, I create the `Dispatcher` in the constructor, then set the target on `_anchor`, which seems better than creating the dispatcher in the `_anchor()` call. In that case, I can't set `this._target` at construction-time.