Shader Attributes and required refactoring

This commit is mostly a refactoring on the way to the next big OpenGL 3.x bump I'm working towards.

It switches us over to using some attributes for vertex inputs, then changes the shaders and required data inputs to match.

Nothing should be any different visually only in the way that it's implemented in the backend/renderer.

Andy
Looking through your commits it occurred to me that "declarations.glsl" might actually be a nice and fitting name.