Add input queue to backend, fixing process leak problem.
Mouse and keyboard input is handled immediately, all other input is put on a
queue which is processed whenever gui_mch_update() is called. This avoids DO
calls to be sent from the backend during processing of another DO call. (See
comments in MMBackend processInput:data: and processInputQueue.) One problem
this caused was that connectionDidDie notification was not received when
processInput:data: got called recursively (and thus processes could "leak").
Also did some code cleanup to MMBackend.