[vim] Use keymap binding instead of event handlers

Revert back to using CodeMirror keymap for key handling instead of direct key handlers.
https://github.com/codemirror/CodeMirror/issues/2915

@heppe please review at your convenience.
@nightwing you probably have to add a proxy for the `call` property on keymaps in ACE https://github.com/codemirror/CodeMirror/commit/dd2b9d86ac30feb74c0bf0b999893382cd9f1e07
on lines 238 and 635 you are assigning command = findkey(), and then testing against 'function', but findkey is defined as returning true or false.

Or maybe I'm missing something.