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.
Seems to be cp'ing logic from before, but if we can make use of d3.keys, would be appreciated.  (At least consider doing this down the road, NBD currently though)