Notebook Actions second part.

On top of #6668 

Start using actions for toolbar, and other stuff.

In particular, toolbar can be "just" described as a `[list of groups]`. and each group is a `[list of action name]`.
technically a group is either a list of action name or a specific value for something that cannot be done as an action (typically dropdown to select cell type), but that's only for private use. 

Also in this PR:
  - Render shortcut nicely on mac with unicode value of Cmd, Esc, Up Down, ... etc. 
  - Do not use dom ('#cell_type') to link things together, so technically you can have many toolbar with many dropdown that allow to select cell type, and everything works.
  - F&§$* Javascript (IIFE in loops)
  - Use relative import in require.

 
If I'm understanding this correctly, these custom actions are stored in `this` - which is the toolbar instance.  So `<custom_action>` runs `this.custom_action`.  This means if you want to register custom actions, you're limited by the namespace of this.  Why not have a dictionary for registering these custom actions?  i.e. `this.custom_actions`?  If this is a hack to expose methods of the toolbar class, I think this should be removed.  Instead the actions of the toolbar should be registered in the global actions list.