Fix recursive crash when home path cannot be created
Fix the ‘stuck button’ bug.

Sequence of events which triggered the bug:
- Initial state: no buttons pressed
* Key-down received
* Key-down handled
  * Commands buffered
* Key-up received
* Key-up handled
  * IN_KeysUp called but it thinks that no buttons are pressed so does nothing
…
* Commands executed
  * One of these is a +command which causes a button to be marked as pressed

The new approach changes things so that key-up causes a command to be
buffered, with the bulk of the previous key-up handling being done in the
code for this command.