Update gl.hpp to wrap all gl calls.

All gl calls are now optionally checked (by default when NDEBUG is not
set) for errors before and after the call.

(Also, it doesn't try to use GLEW anymore on OSX.)
Fix bug in (vao|vbo)::destroy().

The id wasn't set to 0 after destroying the (array|buffer) object.