introduce app.diamond

this will be ready for a pull request once nothing outside of app.diamond knows
anything about the implementation details of getting a sequence of keystrokes
(scan_codes, modifier keys, key events, etc.)

this is good because it lets us easily swap out implementations of "get me some
input" possibly with a nice mock implementation for tests (eventually)

so far:
1) introduce app.diamond.{grab_keyboard_focus,regrab_keyboard_focus}
2) delete unused modifier keys

needed:
1) The callbacks to grab_keyboard_focus should receive keys like 'h' '<C-C>', '<ESC>' 'H' rather
than raw scan_codes. See :help <> for some details if needed. There are 2 callbacks right now, one
for normal mode and one for exec mode.

nice to have:
1) merge or otherwise restructure {re,}grab_keyboard_focus
2) callbacks to grab_keyboard_focus shouldn't have the power to determine
whether or not to preventDefault (breaks the abstraction). This is probably
worth a separate diff; the way I initially imagine it working is that
app.diamond is also responsible for the action/command map