MD5Mesh parsing and processing

The files are first loaded, and then processed during which
vertex positions and normals are calculated from the bind-pose
skeleton. The processing is automatically called after parsing,
but they can be called to manually update the vertex data.
Added the beginnings of a base Mesh class

Mesh vertex data and index lists are stored in a mesh group.
This allows having sub-meshes within a mesh.
Added a method to update the mesh's index list
Added the ability to get the number of sub-mesh groups in a mesh
Fixed Mesh index lists to now be just a vector of the indices

Additionally VertexData::Color is a vec4 now to include the alpha element.
Start of Renderable component

It takes a mesh resource via SetMesh(), and initializes the GL
buffers with the mesh group data. Each mesh group is assigned
a BufferGroup which contains a VAO, VBO, and IBO.
Added Material and Shader resources (missed in the last commit)

These are useful for rendering only.

Material stores a list of pairs for texture to texture IDs that can be looped over during
rendering and for pre-sorted Renderables for rendering.

Shader loads GLSL files and compiles them and has methods for using/unusing,
assigning uniforms/attributes, and retrieving the uniform/attribute locations.
Basic graphics system that clears the screen black

Set's up a default view and projection matrix with "sane" values.
Added MaterialGroups and Renderables to graphics

The material groups are used to sort Renderables before rendering.
They are sorted based first on shader program and then texture by
texture.
Fix linking error in Linux and reformated to look better/more easy to read
Fix auto& foo = ...GetShader(); that returns a const reference. Replaced make_unique by two lines of code
Merge pull request #6 from Zardoz89/feature-graphics-system

Feature graphics system
Set the GLM_FORCE_RADIANS flag to enforce using radians

This is because GLM functions taking degrees is deprecated.
make shader actually printout errors
Merge pull request #7 from Meisaka/feature-graphics-system

Shader debugging
Lots of style changes

Style changes for Renderable.hpp/cpp

Also a change in Renderable::UpdateBufferGroups.
Now during VAO setup the shader attribute location is queried
from the material's shader.

Style changes for Material.hpp/cpp

Also Material::ActivateTexture now takes a GLuint  instead of
TEXTURE_TARGET. The target is just a offset of GL_TEXTURE0
so the target parameter is just added to GL_TEXTURE0.

Style changes for Graphics.hpp/cpp

Also changed GL::RemoveRenderable to use the list's remove method.

Style changes for Mesh.hpp/cpp and MD5Mesh.hpp/cpp

Style changes to Shader.hpp/cpp

These changes weren't to heavy as the class will
be undergoing heavy rework a bit later.
Shader::Initialize now takes 2 properties

These are vertex_filename and fragment_filename.
These properties reflect the relative filename of the shader files.
Merge branch 'feature-graphics-system' into develop
Added RegisterTypes method for ResrouceSystem and JSONParser

These methods couple the registered types at compile time and are
called from the appropriate construction calls. The only onus for the
developer is to add the appropriate include and registration line to
the correct source files and their type is then known to the corresponding
system.

Additionally some GL libraries have been added to the tests CMakeLists
as certain files require them.