Working on materialization
Refactored Datum.allocate into Datum.split
Added enum RandomSpecType to PropertyDef.RandomSpec
Added get methods to Datum class
Replaced old code where Datum.type was of type Class<?>
Working on materialization
Changed type of WorldTree.properties to Map<String, Datum>
Added missing 'RANDOM' to RandomSpec toString, debugString methods
Added Datum.compareTo method
Moved around certain methods of the Datum class
Working on resolving properties while handling queries in ResolutionEngine
Working on materialization
Small space issue in Space
Fixed a bug in WorldTree.pushDownConstraints()
Due to addition of Tile skeletons, the empty piece which was
originally used for filling voids caused by all interfaces being invalid,
is now also used while creating skeletons of Regions.
Space.getValidInterfaces has thus been modified to skip setting an interface
as invalid due to a neighbouring empty piece.

This will probably lead to some Regions where these empty tiles end up
looking like sinks for neighbouring tiles
Implemented WorldTreeFactory.Map.fill() method
Currently this is a hacky bug that just materializes the children
of each Region. We are taking advantage of the fact that Map, Room
and Region classes are just empty containers for the tiles themselves.
Thus by materializing the children, we give the entire Map its full visual.

Updated WorldTreeFactory.Region.initRegion to copy over existing ITile's
properties and constraints while materializing the actual ITiles.

Added setStartEndTiles method to IRegion interface.
Updated UIDebugEngine to reflect this change.
ResolutionEngine.resolve now tests for conditions while
resolving queries. This method has been slightly updated taking
into account the recent addition of the Datum.compareTo() method
Semi-working materialization
    - Materialization works for constraints containing SUM -> =

WorldTreeFactory.materializeDefinitions temporarily adds visual to Tiles
upon materializing a property.

Updated InitializationTests class