Another huge commit. :/

(Maybe I should start breaking these up?)
All objects/components: Changed "add to rendering engine" per frame
function to an "add to engine" function that's called once.

Camera: Moved the looking and movement into their own components.

ForwardShaders: Removed as shaders detect and update uniforms
autimatically.

FreeLook: Game component that rotates with mouse movement.

FreeMove: Game component that translates with keyboard control.

GameObject: Now supports inputting/updating/drawing the single object
and none of its children.

IndexedModel: Now also stores and calculates tangents.

Material: Added destructor that frees texture memory.

Mesh: Now also loads tangents, and profiles itself.

OBJModel: Removed profiling and added tangent calculation.

Quaternion: Added more math functions.

RenderingEngine: Now supports normal mapping.

BasicShader: Removed as it no longer is in use.

ForwardShaders: Now support normal mapping!

Shader: Uses the ShaderData class to make sure only one instace of each
shader is created.

ShaderData: Resource management class for shaders.

Transform: Added some rotation functions.

Vertex: Now also holds the tangent.