Add alternate KeyInputEvent for better GUI handling.

The current event will always fire on any key input, even when
the currently active GuiScreen would rather not cause extra actions.
For example, when a GuiTextField is in focus and character input
should go to filling that and supress most other actions.

This events gives a generic event for all inputs that are not occuring
with an open GuiScreen (in the main game screen) and is hooked into
GuiScreen.keyTyped() as all situations where a specific screen wants
to block inputs will avoid calling super.keyTyped() in order to avoid
the vanilla bindings checked in GuiScreen (Esc) and
GuiContainer (E/Open inventory).