Implement custom keyboard shortcuts support with a user key map file.

Will add JSDoc later.
Criteria in [Trello card](https://trello.com/c/3mZwu1DE/352-m-user-specified-keyboard-shortcuts-for-commands-in-json) explicitly calls out to show error. But I'm fine to allow multiple shortcuts though.