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

Will add JSDoc later.
Yes, it's easier with an array of keys. Also I can't get _defaultKeyMap with those bindings in unit tests. So I switched to an array of keys.