Change hotkey processing

All input events are now passed up the current stack of windows using
the "hotkeypress()" method to give ui elements the ability to intercept
them if they need to.

When the input event reaches the current page, the default action is to
look at the configured hotkeys and if the keypress isn't one of them to
hand it to the keypress() method of the current input focus as before.

This will be useful in the future when NFC tap input events are to be
treated as hotkey presses by default, but will sometimes need to be
captured by a field when (for example) setting up new NFC cards.