Added step to pre-process bounds on properties based on constraints

Removed WorldTree.pickValue()
    - We rely on Range.generateRandom()

WorldTree.getBounds() now returns a clone of the randomspec range
Added method to HierarchicalSplit class to modify constraints
containing conditions with operators [ < | > ] into [ <= | >= ]
Added methods to RangeSet to improve accessibility
Added RangeSet.get() method
Working on RangeSet integration
Working on RangeSet integration
Working on RangeSet integration
Working on RangeSet integration
Added RangeSet.sum method
Working on RangeSet integration
Working on RangeSet integration
Changed split method in HierarchicalSplit.Node

While this patch does not introduce any significant change,
it makes the splitting process easier to reason about
Minor spacing issue with RangeSet
Minor spacing issue with WorldTree
Implemented hierarchical split using RangeSets for SUM case
Fixed a bug in WorldTree.processBounds() EQ case

range was being added to newPropertyRanges before being updated
Thus these changes were not reflecting in newPropertyRanges
Correctly implemented following cases of WorldTree.processBounds()
    - GT, GE
    - LT, LE
Working on improving RangeSet.generateRandom()
Working on resolving WorldTree.processBounds NOTEQ case
Working on hierarchical splitting of range sets