Added the missing Linux keyboard member functions

|SOURCE|
[Common/Game]
* Moved the gamepad and keyboard initialisation to the Initialise member
  function
* Using the keyboard state instead of the IsKeyDown member function for the
  keyboard
[Common/Keyboard]
* The connected member variable is set to false in the constructor
[Linux/Keyboard]
* Added the member function definitions which were absent in the wake of
  re-organising the code
The input manager controls the input devices, rather than each device managing
itself

|SOURCE|
[Common/Game]
* Changed the Keyboard and Gamepad variables to pointers
* Using the GetDevice to retrieve the keyboard and gamepad from the input
  manager
[Common/InputManager]
* Added two new parameters to Initialise for setting the device types and the
  amount of device types to use
* Removed AddDevice, replaced with GetDevice
* GetDevice returns either the device if it's found or null if it is not
* Added a Gamepad and Keyboard member variable as well as an array of
  InputDevice pointers
[Linux/LinuxInputManager]
* Initialise adds the requested devices and initialises them
Added a PolygonCache class

|SOURCE|
[Common/PolygonCache]
* The PolygonCache is responsible for pushing polygons to the GPU memory and
  allowing the user to recall previously registered polygons
Added OpenGL | ES 2.0 extensions functions

|SOURCE|
[Common/GLES2Extensions]
* Added glDeleteVertexBuffers and InitialiseGLES2Extensions to get the address
  for the GLES function
[Common/PolygonCache]
* Purge should delete all resources from the GPU
[Common/Game]
* InitialiseGLES2Extensions added after the renderer is initialised
Added glGenVertexArrays and glBindVertexArray to the GLES2 Extender

|SOURCE|
[Common/GLES2Extensions]
* glGenVertexArrays and glBindVertexArray added and bound in
  InitialiseGLES2Extensions
Added VertexAttribute helper functions and structs

|SOURCE|
[Common/DataTypes]
* Added float and double types (AURA_FLOAT32 and AURA_FLAOT64, respectively)
[Common/Memory]
* Replaced the #define SafeDelete with a templated version, also added a
  version for deleting arrays
[Common/PolygonCache]
* Replaced the 64-bit integer for vertex attributes with a reference to the
  VERTEXATTRIBUTES struct
* AddPolygons defined to create a new polygon cache if there isn't one free
  already, otherwise the new cache is used to replace an empty one
[Common/VertexAttribute]
* Added structs and helper functions to create, add, destroy, and extract
  information from the structs
* AddVertexAttribute adds an attribute to a VERTEXATTRIBUTES struct
* CreateVertexAttribute and DeleteVertexAttributes to create and initialise a
  VERTEXATTRIBUTES struct as well as destroy it, respectively
* VertexAttributeToMemorySize converts a VERTEXATTRIBUTE to the size in bytes
* VertexAttributeToOpenGLTypeSize converts a VERTEXATTRIBUTE to an OpenGL enum
  type and the size of the attribute
Added a boolean value to VertexAttributeToOpenGLTypeSize for normalisation

|SOURCE|
[Common/VertexAttribute]
* VertexAttributeToOpenGLTypeSize has another value returned which indicates
  whether the vertex attribute is normalised or not
[Common/PolygonCache]
* The normalised parameter of VertexAttributeToOpenGLTypeSize is used in
  glVertexAttribPointer to set wheter the vertex attribute is normalised
Defined the Render member function of PolygonCache

|SOURCE|
[Common/PolygonCache]
* The array of cache items is iterated over until the ID of the cache matches
  the requested ID, if it could not be found or if the polygon count was zero,
  an error state is returned, otherwise the polygons are rendered
Linux now using the PowerVR SDK for the OpenGL | ES 2.0 implementation

|BUILD CONFIGURATION|
[Linux]
* Added POWERVRSDK_ROOT to the include and library paths

|SOURCE|
[Common/GLES2Extensions]
* Added OES to the end of the extensions string values
[Common/GLES2Renderer]
* Moved the OpenGL | ES 2.0 extensions to Initialise
* OpenGL | ES 2.0 information is printed to the console at startup
[Common/LinuxEGLWindow]
* The EGL version is printed out when created and error codes are handled when
  initialising EGL
Extensions are printed out as a list instead of as a blob of text

|SOURCE|
[Common/GLES2Renderer]
* If OpenGL | ES 2.0 extensions are available, they are printed out one-by-one
  until the list is exhausted
Implemented the DeleteCache of the PolygonCache class

|SOURCE|
[Common/PolygonCache]
* DeleteCache calls the GL's Delete* functions to remove the vertex and index
  buffers as well as the vertex array object and sets everything else to zero
* If the ID requested is larger than the cache's size, a failure state is
  returned
Started work on the material manager

|SOURCE|
[Common/Material]
* The primitive which holds material information (the hashes of the textures
  and shader used as well as the shader parameters)
* All materials need to be associated with the MaterialManager class to allow
  for textures and shaders to be loaded and managed
* CreateFromFile reads a material file, decomposing each element of the file to
  extract the shader source and texture files
* SetShaderParameter uses the requested parameter by name passed in along with
  the previously collected shader uniform names to determine if the parameter
  name is correct, then the pointer to the data is used with the shader
* GetHash returns the material's hash (FNV-1a), which is calculated in
  CreateFromFile
* GetShaderHash returns the shader's hash value
* GetTextureHashes returns a std::list of material hashes
[Common/MaterialManager]
* The Material Manager creates and destroys materials along with textures and
  shaders
* CreateMaterial loads the material from the requested file name and stores the
  hash in the hash parameter
* ApplyMaterial uses the hash passed in and compares it with the hash map in
  order to determine if it can be applied, a failure state is returned if it is
  not found, otherwise success is returned
* SetShaderParameter uses the hash to get the requested Material and uses the
  parameter name along with the pointer to the data to set the shdaer parameter
* CreateShader uses a MATERIAL_SHADER struct (which relies on the to-be-done
  Shader class) to create a shader and return a list of the shader parameters
  along with a shader hash
* LoadTexture loads a texture from file and returns the hash of the texture
Added FNV-1a hashing functions for byte buffers and strings

|SOURCE|
[Common/FNV]
* HashBufferFNV1a and HashStringFNV1a use the standard implemetation of FNV-1a
  from http://www.isthe.com/chongo/tech/comp/fnv