Dispatch events more directly.

No need for a queue; just send them from the translator.
Get key input via the USB layer.

This gets us many advantages: key codes that are more portable than ADB
key codes; ignoring sticky keys; expandability to other input devices.
Changes to CoreFoundation support.
Add basic gamepad support.
Fix memory leak.

Used to be that the queue would take ownership of input events, but
there isn't a queue anymore.
Fix mouse unhiding in windowed mode.
Merge branch 'keys-hid' into develop
Consider one interface screen event at once.

If another button is selected, or another card is displayed on top of
the current one, stop considering the currently in-progress button
event.
Cancel any minicomputer button when pausing.
Send events directly to player ship.
Handle some events directly.

Restore zoom shortcut masking in the tutorials.
Handle several gamepad buttons.
Show select/target gamepad reticles.
Select and target with the left stick.
Handle bumper bookkeeping early.
Avoid popping an empty queue.

This can happen if timers are delayed by too much.
Merge branch 'message-pop' into develop
Merge branch 'message-pop' into events
Set several ship keys from gamepad.
Handle gamepad stick events better.

Don't block ticks behind them.