Allow profiling to be enabled on-demand
Support OpenGL 4.3 (and be a bit smarter with how GL() is handled
Ensure checkError is called after glUniform*
Use lua::getAll instead of manually doing it
Prefer real functions over lambdas when writing OpenGL bindings

This is purely a stylistic choice, though there's likely a minor
performance benefit since we avoid wrapping the lambda in a
std::function. However, for my purposes, this is just cleaning up.

I also added checkError calls after each OpenGL function call, including
ones that don't have any OpenGL-specific error conditions. (e.g.
IsBuffer, IsProgram).  checkError checks for an active context, so it's
valuable there. It's also nice for consistency.
minor formatting
Added more aliases for glUniform
Fix a bug in glClear binding
Remove some unused variables
No need to stack.clear() in glClear; stack is guaranteed to be empty
Populate properly handles non-table root values
Added a nyi() method for stubbing OpenGL methods
Lots of work to get glUniform* bindings done

There's a lot of touched lines here, but most of them are repetitive. I've
tried to use templates as much as possible to minimize the duplication,
but a lot of it is unavoidable (without macros, anyway)
Support a resizing hook
minor reorg
Added maxValue to sizeof (and renamed to datatypes)
Added several depth test functions
minor rename
Added glPrimitiveRestartIndex
Added glDrawElements