Biomes

Added a Biome enumeration and changed the type of the Biomes field of the ColumnContainer class to Biome.
WorldLock Fix/Rewrite

Discovered a deadlocking bug in the previous WorldLock implementation, and realized that "dirty" writes were not necessarily exclusive.

Accordingly, rewrote the WorldLock class to support both exclusive and shared locking.  This will allow sections of code that perform a large number of "dirty" writes (such as populators) to leverage considerably more parallelism than they previously would've been able to.
BlockID Fix

Fixed a bug which was causing BlockID objects to return incorrect values for GetContaining under specific circumstances.
BlockID Tweak

Tweaked the order of some comparisons in the IsContainedBy method of BlockID.

Should save a few instructions in the case where a block and a column are in totally different dimensions.
Populator/Generator Changes

Changed the interfaces for generators and populators.

Also added a function to add populators to the WorldContainer.

Fixed a bug in the code which determined whether a given thread was populating, which caused it to dangerously return incorrect results when a thread recursively populated another column.
Singleton/Factory Pattern Refactor

Refactored the entire server code base to use a singleton/factory pattern for module object acquisition/use, which will result in a better, safer, and easier to understand/maintain module loading/unloading paradigm.

The only significant change beyond the changes necessary to accomodate the new pattern (most of which are name changes), is the addition of the "OnShutdown" event to the Server class.  Since modules can no longer guarantee that they will be unloaded after modules which depend on them, if they allow other modules to hook into them, they'll have to handle this event and clear out all such handlers.
Misc. World Changes

A few changes that should've been included in previous commits, but were overlooked.

Also added a method to the World class to get the type of world the server is supposed to be generating/hosting.
Command Changes

Command singleton/factory refactoring.
Hardware Concurrency Detection

Since MinGW does not support std::thread, implemented std::thread::hardware_concurrency (for Windows only as of now).
Makefile

Added hardware concurrency build instructions to Makefile.