Print commandline arguments to stdout

This removes the warning about unused variables argc, argv

This also makes way for using the arguments for settings in game.
Add Material ID

Makes it easier to track which materials generate errors or warnings.

It's currently just equal to the name of the material given to by the
aiMaterial object passed during creation. Name could be a dummy, but
it' better than nothing.
Make use of a scaling factor when importing Models

Some models/scenes use different scales and doesn't fit in with the
camera speed, near and far planes etc. This gives the ability to
manually scale the models to fit the world.

This should rather be encapsulated into ModelInstance as a size/scale
property.
Add FShader::getShader function

This gives the ability to look into what shader object is going
to be attached to the shader program.

This leads up to Adding a ShaderManager which will allow shader
programs to shader objects.
Change FShader log functions to public static

This changes FShader::printProgramLog() and FShader::printShaderLog()
from private to public static.

This is required before FShaderManager can be implemented as it would
need access to those methods and they do are independant of FShader.
Fix unused param warning in GL callback functions

Since the function prototype must match the function can't be changed.

This isn't a very nice way of doing this, but the compiler should
optimize it out anyway.
Don't delete shader objects after linking

The ShaderManager will have control over the shader objects and
shader objects might be re-used later in another shader. The
ShaderManager will destroy it when it isn't required anymore.
Add Map Iterator that references itself

It will essentially reference itself from the FShaderManager
to which it belongs

Some nice comments added aswel
Use radians when working with glm

Using degrees is marked as deprecated in glm 0.9.5 and removed in 0.9.6.

This ensures that it works with all versions of glm that supports the
GLM_FORCE_RADIANS macro.
General code cleaup

1. Move global objects to their own file so that there isn't as much unnecesary parsing
2. Fix some comments
3. Declare each class before including other files to avoid circular dependency issues
Force all OpenGL Messages

Some messages aren't displayd by default even with debug context on nvidia hw. This patch makes
it display everything.
Add ShaderManager

The ShaderManager manages all shader objects.

This reduces code size when creating shaders.
Doesn't recompile shaders objects that are already compiled.
Makes future memory management of shaders possible.
Texture corrections

Use glTexStorage2D and glTexStorage3D to avoid creating unneccesary mipmaps.
Add verbose messages when creating G-Buffers.

Check for FBO Status when creating fbo_deferred.
Add FCamera::setPositionUniform

Add function to send camera position to shader uniform.

This is a required feature for point lights.
Batch creating a gbuffer into a function

This reduces code size and makes the code more readable.
Shader fixes

Do signed preservation in shader instead of using snorm textures as it's
not a requirement for OpenGL to allow snorm textures to be drawable.

This is a workaround for a bug in the nvidia driver which reports that
the snorm texture attached correctly to fbo. Ideally if it reported that
it doesn't work it should then switch between the two methods, but since
nvidia doesn't report that it doesn't work then we have to assume that it
doesn't work.
Beter Texture parameters

Use Mipmaps and linear filtering to increase performance and visuals.
Remove commented out code
Add prototype for gbuffer creation function

Was missing from commit 1e6cf632ab29a7634e493661f79de7b5a8340539
Use ShaderManager to load shaders in FRenderEngine

Saves code space and caches shader compiling.