Removed unnecessary restrictions about const in the buffer code.

We were asking for a non-const object where a const one would suffice.
Added code for querying info about uniforms. Also added a manager for uniform block bindings.
Added a uniform buffer subclass of buffer.
Fixed a problem with the uniform block binding code, and added a test for it.
Added some documentation
Added more documentation to uniform_buffer and also added a cbegin function.

Fixed a bug caused by comparing name instead of block_name.
The variables map wasn't gettting populated by the constructor,
fixed that too.
Fixed a small bug that appeared when the uv thread didn't have time to initialize.

We were using a uv_async as if it had been correctly initialized, but
that didn't necessarily happen before the destruction of the uv_thread.
Fixed another small bug. Optimizers can be very difficult to understand.
More work on OpenGl code