input: remove separation between key and control queue

This is actually quite useless. It also allows the control queue to
starve the key queue, because the control queue is always checked first.
input: redo what input events can be dropped

Until now, any command was dropped as soon as the input queue was full,
and the command was not an abort command (i.e. a command that exits the
player or goes to the next file).

This could cause issues with key down events (especially mouse buttons)
not being released.

Change it so that key up events can never be dropped. This is a bit
involved, because we know whether a key maps to an abort command only
after interpreting it, and interpreting it changes global states, which
in turns requires undoing the event if the input is dropped. Refactor
the code a bit to move more functionality into interpret_key() to make
this easier.

I didn't actually test most of this.
input: split queue_add() function

Split it into queue_add_head() and queue_add_tail(). Gets rid of the
weird, rarely used boolean parameter.
input: attempting to merge consecutive mouse move events

Untested, because I couldn't actually provoke this situation.