Started work on an input device abstraction layer

|SOURCE|
[Common/Game]
* Added a pointer to an InputManager
* Added a Keyboard instance
* In the main loop, when the escape key is pressed the game exits
[Common/InputDevice]
* Added an enum for keyboard keys
* Added a struct to hold keyboard keys and the key moifier state
[Common/InputManager]
* This is the base class to be derived from for the platform specific
  interfaces
* AddDevice registers the device passed in to either a mouse, keyboard, or
  gamepad (currently only one of each are planned to be supported)
[Common/Keyboard]
* Deriving from the InputDevice class, a keyboard provides an interface to set
  and get the key state
[Common/EGLWindow]
* Removed the ProcessEvents definition from the common source, instead each
  platform defines a specific ProcessEvents member function
[Linux/LinuxInputManager]
* Currently only the keyboard press and release events are handled, all other
  events are put back on the event queue
* MapKeyToChar returns the character of the key
[Linux/LinuxEGLWindow]
* A simple window is no longer created, instead it has been replaced by a
  standard window which also listens for more event types
* ProcessEvents handles any relevant events, those which are not handled are
  put back into the event queue for other event processors to handle