Add notion of action to keyboard manager.

Instead of directly registering a function on the keyboard manager that takes closure and event parameters, this also also to register a `string`, that map to an `action`. Each action is a dict that comprise the `help`, `help_index`, and a `handler` as before, but handler take one more parameter. And this will allow to also associate a icon (font-awesome) with the action. In the end custom keymap will just be json-able dict, so easier to configure. This would also allow to make a menu<-> action link (so why not a dynamic menu) and or show shortcut next to menu items.

Ping @ellisonbg 
no otherwise it can be confused with 'just execute in the kernel and don't change UI' which make sens as an action.