Clean up code

Changed method overloading to make liberal use of optional parameters
Cleaned up some formatting
Reformat QFont.cs
Initial implementation of shader support and removing deprecated functionality.

VERY much a work in progress and still very 'hacky', but it partially works!
Will cleanup code, remove unnecessary methods and improve robustness in future commits.
Fix orthographic projection creation
Added reference images
Fix inverted textures (and hence weird kerning)
Add progress/reference screenshots
Add PrintToVBO method that takes a processed text instead of a string
Add some benchmark code to test processed vs. unprocessed text
Re-enabled drawing of main text segment using VBO's
Flip in Y direction - hack needed for correct rendering of fonts.

Possibly a better fix would be to re-order the vertex and texture
specifications in RenderGlyph()
Fixed colour blending in fragment shader
Removed deprecated functionality and enabled vertex buffers when loading .qfont file
More tests in the example project

Tests the fixed colour blending as well as loading from a .qfont file
Removed immediate mode code in Helper.cs and TexturePage.cs

Need to check whether a few methods are safe to delete
Refactored QFont.cs to share the rendering state between multiple instances if required.

Created new class SharedState to hold the rendering information for QFont. (State is perhaps not the best word?)

Implemented functionality to initialise static SharedState if not already initialised and no custom SharedState specified on QFont instance creation.

Public instance function to return either the instance's shared state or the static one, depending on whether the instance shared state is null.

Attempted to make state classes as immutable as possible - I can't think of a good reason these should change during runtime.

Improved robustness of shader, sampler and program generation, compiling and linking code.
Now checks for errors on (almost) each step.

Updated QVertexArrayObject to reflect changes to how render state is passed to the VAO wrapper.
Commented out deprecated OpenGL functionality. Will possibly need to reimplement some commented out parts of codebase using modern OpenGL.
Update reference images.

#5 is texture drawing using vertex array objects and no immediate mode OpenGL (fc832d45bff05150e299346db197bf0a02bf1e3b)

#6 is almost all immediate mode functionality removed (at least in the QuickFont namespace) and using a shared render state across all QFont instances (2711acc47a8d4f5ce92037f44b1ec212ec267fe2)
Remove unused QVertexBuffer class
Made KerningCalculator class static
Refactored major constructor parts into two separate methods, GetFont and InitialiseQFont