Added the Shader class and started loading materials

|SOURCE|
[Common/Material]
* Moved the MATERIAL_SHADER struct from the Material Manager to the Material
* CreateFromFile loads a material file from mass storage, though the shader
  creation and texture loading is not currently handled as they are not
  implemented in either their Texture or Shader classes
* The material file's contents is passed through the FNV-1a hashing algorithm
  to produce the hash value for the material, if the material manager detects
  that this is a duplicate, the function returns OK early
* Each node in the material file is iterated and verified for its existance
  before continuing
[Common/MaterialManager]
* Added a MaterialExists member function to determine if the material hash is
  already in the map of material hashes
[Common/Shader]
* Added a SHADER_TYPE enum, which filters the shader types supported by a given
  shader as well as a flag for if the shader is from a file or source
* Added an operator for assignment OR-ing a SHADER_TYPE to another SHADER_TYPE