Add alternate KeyInputEvents 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.

These events are separated to give a generic event for all inputs
that are not occuring with an open GuiScreen (in the main game screen)
and a separate event 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).


See also MinecraftForge/MinecraftForge#1104

(Sorry about the line changes in the patch, but genPatches seems pretty insistent on changing those)