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

Will add JSDoc later.
nit: why not just make `DocumentManager` the name of the function argument?