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

Will add JSDoc later.
Yes, we have to return null to indicate the key is invalid. You can try it out with something like "Cmd-2" on Windows. Without returning null you will see `2` show up as shortcut.