Wrote a custom Optional template.

While I was in a templatey-mood, I realized that by replacing
boost::optional I could potentially have no dependency on boost at
all. I might branch off a library for this purpose, as boost is massive,
and as of C++11 I only use a few classes from it, which aren't hard to
write.
Fixed MeshBuilder::append vertex size tracking.
Fixed WorkQueue::sync()

sync was returning while the piece of work was executing.
Small fix in Shader error reporting.
Begin rewrite of lua bindings.

Starting with handling only primitive types, with unit tests.
Bindings for user defined types working again.
Worked on const correctness.

There are now two metatables, one for T and one for const T.
The only automatic conversion implemented is that requesting a
const T & will try again as a T &. const conversions behind a pointer
or smart pointer are not yet implemented.
Added support for pushing reference_wrappers.
Split headers into .h and .icc files.
Wrote unit test for templates.h
Replaced UserData with PointerWrapper.

Factored responsibilities between it and bindings.h clearer.
Error handling is now easily done with exceptions, and some edge
cases now work properly.
bindings.h throws exceptions instead of lua errors.

This allows for exceptions to be verified in unit tests.
Wrote invokeWithLuaArgs
Small fixes to bindings and PointerWrapper.
Wrote new MetatableBuilder
Added LuaStackFrame RAII for cleaning up Lua stack.
Added more functionality to Lua.

It should be possible for users of Lua outside of unit tests
to never have to call out to LuaJIT itself.