Removed following methods
    - IWorldTree.getAllChildren
    - IWorldTree.getChildrenByClass

These methods meither had a strong use-case to exist,
nor were they being used.

Removed them from WorldTree as well

Removed getAllChildren from MemoryTest class
MemoryTest class now correctly uses Map.materializeConstraints
rather than map.pushDownConstraints
WorldTree.pickValue is bugged!

pickValue is failing when the operator is '<'
This is happening because of HierarchicalSplit picking
lowerBound when the operator is '<'
This leads to an impossible situation at pickValue

Added a small hack to temporarily bypass this
Improved error messages for missing properties

Replaced Map.allNodes with Map.getNodesByLevel

allNodes was found to be consuming enormous memory
With multiple calls, getNodesByLevel can acquire the
same functionality as allNodes

Map.materializeConstraints now iterates through each level
rather than iterating through allNodes
Updates to PerformanceTests
    - No longer uses java.util.Properties
    - Statistics class now extends TreeMap instead of HashMap
    - Added store method to Statistics class
    - Added comments to PerformanceTests.increasingAreaTest
Removed empty string "" from Helper.pieceStrings

Helper.pieceStrings contained empty string "" which was
causing PieceFactory.initializeVisuals to create two
entries for IPiece with interfaces=""
This was leading to random bugs in Tile visuals
Added WorldTree.bounds field

Computing bounds was being quite expensive for large hierarchies
Added WorldTree.bounds field to introduce some dynamic programming
Slightly optimized WorldTreeFactory.getNodesByLevel