Added material-related classes (shader, material, and texture classes)

|SOURCE|
[Common/Material]
* The Material class is responsible for providing a simple interface to a
  composition of a shader and /n/ textures, allowing the user to set shader
  parameters easily
[Common/Texture]
* Textures are defined by their rendering parameters (mipmap levels, ST
  co-ordinate filtering) and a Targa image for the texture data
[Common/Shader]
* Shaders can be comprised of vertex, geometry, and fragment shaders
* The list of parameters are discovered from the shader source and their names
 are mapped to OpenGL locations for when setting the data later