Extracting shape data out into a helper module.

Several different classes use it, not just Buildings.
Extracting direction out into a concept.

Using an Enum will help ensure that no mistakes are made regarding
treating an integer direction as a different kind of integer. It also
detaches the ordering of the directions from other implementation
details.
Moved most classes into sub-packages.

This also shows certain instance variables that were marked as
protected, but should be public, due to code in the same package being
able to access protected variables.
Unwinding BuildingExplorationHandlers from the WorldGenerators.

Most of their configuration options are loaded from initializer
arguments now. The only one who still uses one of the config objects is
WorldGenCARuins, due to the large number of config options it uses
internally.
Extracting static methods and related constants from Building.

* Created WorldHelper to handle some World-querying methods (eg,
  findSurfaceJ()) and related constants
* Moved several general purpose integer methods into Util.
Replacing WorldGeneratorthread references in Buildings.

Replaced them with a IBuildingConfig that wraps the attributes
(including optional attributes) that Buildings can access. Also
abstracted out the "layout" related code that exists for
WorldGenWalledCity only into ILayoutGenerator. Buildings then use their
ILayoutGenerator if it exists, instead of asking the world generator
thread whether it is a layout generator.
Enumerized LayoutCode and moved ILayoutGenerator into walledcity
Replaced handedness with an enum.
Turning DEAD and ALIVE into enum states
Reworking PickWeighted and dropping Object arrays for chest contents.
Extracting Roof styles into an enum.
Replaced door meta constants in BuildingTower with the meta lookup maps.
Moving Direction-Metadata mappings into their own class.
Moving CARuin default spawner rules into the config class.
Converting trap type to an enum.
Cleaning up BlockAndMeta and subclasses.

Also moved the BlockAndMeta constants into BlockAndMeta.
Trying to make y and z consistent with Minecraft's coordinates
Cleaning up and unit testing Dir.

Removed the deprecated methods, Using the handedness over boolean
values.
Moving integer utility methods out to their own util class.
Moving the parser functions into ParseUtil.

Also Unit tested all but readRuleIdOrRule(). It needs Minecraft's blocks
to be bootstrapped properly. (before generatormods is loaded)