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.