Reworked ChunkMeshManager to not have a race condition.

As a happy side-effect, GraphicsSystem no longer needs an explicit
call indicating that a chunk has changed.
Now Meshes are created by MeshBuilder::build instead of constructing from MeshBuilder.
Generate chunks on Z axis.
Introduced BlockTypeRegistry for creating BlockTypes, which now have names and unique IDs.
Split util.h into a utility directory for future expansion.
Wrote a simple work queue, replacing the use of boost::asio.

The new queue has handler priorities, and being at the core of the
program, having it custom-made allows for greater instrumentation and
performance optimizations in the future.  Also, this means the app
will be able to choose between boost::asio and other async libraries.