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

Will add JSDoc later.
Hmm. I can't find some of my comments (and your responses).

According to [this MSDN page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) json can be `null` if contents of json file is `null`. This might be a good unit test.

You were going to change this to:

```json
    result.resolve((json && json.overrides) || keyMap);
```