work in progress to add keyboard shortcuts.

@skeep key handling WIP. Trying to keep the sub-components away from raw key events. they can register with the ActionController for app-specific actions. The ActionController is injected with a keyboard-shortcut-to-action-name mapping.