Super scenegraph

"Improved" scene graph. Now every scene node can use its own shader. The shader bindings are handled centraly, to help with optimizing unnecessary shader switches. Use this with `Shaders::bind(shaders);`.
You can use forward rendering in your node if you want to. To do this do in the draw method of the node:
`GBuffer::activeGBuffer()->drawToFinal();`
Remember to set the buffer state back to what is was before (add a helper function for this?).

This implied changing the API of the draw functions. Now we don't pass the uniform locations, but get them in the method from the shader. We pass the camera so that we can get the matrices if we need them.

The `drawGeometry()` function should only handle the geometry and is meant to be used for the shadowmap generation.

The textures in the GBuffer were changed to `float4`. This lets us use the alpha channel in some of them to store extra data. For example, alpha is 1.0 if there is an object, so that we can distinguish it from the background (alpha == 0.0).
**======================================**
**IMPORTANT:** if in any shader you write to the `finalTexture` from the GBuffer, remember to set the `gl_FragDepth` to the real depth of the fragment, not that of the texture.