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 behavior of the two appears to be identical, and looking at the internals of the d3 one I think it'd be more efficient to use `Object.keys()`, which is based on native code.