OpenGL 3.x update

# Description:
Updating the OpenGL renderer to require & use OpenGL version 3.x plus newer GLSL syntax requiring us to build our own matrices, use shader attributes and remove deprecated functionality.

# *NEW* -> Purpose:
With this update to 3.x I've removed almost all of the old fixed function pipeline. In fact it creates a forward compatible profile that raises GL errors if you try to use old functions. This means that I had to recreate all of the matrix transformation code, light, material and other structures in GLSL.
The benefit of all this is that it is now much easier to port to OpenGL ES 2.0+ platforms like tablets and smartphones. Or to use [bgfx](https://github.com/bkaradzic/bgfx) with support for other renderers (DirectX/ES/etc) in the future. 
All of which means we can port it to run on devices like the RaspberryPi, Amazon Fire TV et al.

# Work-In-Progress:
I haven't even decided whether to go straight to 3.3 (GLSL 330) or stick at 3.2 / 3.1 (GLSL 150). That decision will come down to how well everything runs across all 3 OS's that we support. Getting them all to work and give me the correct context has proven to be horribly fragile and convoluted at times.

# Bugs / Notes:
There are probably many more but these I know of:
- [x] `FresnelSphere` - the hyperjump sphere renders opaque in the `SectorView` screen.
- [ ] `glLineWidth` - is deprecated and causes runtime errors, needs a new line shader writing.
- [x] ModelViewer - tested and working.

Posting so people can get a heads up of what's coming, ask questions etc.

Andy