Fixed a bug in QueryResolutionEngine which was not handling certain
types of queries correctly.
Added static method to Range class to generate a Range out of
available set of values.
Added missing empty-set case for RangeSet.generateRandom()
Fixed some assertion error messages in Range class
Refactored some field names in ConstraintSolver class

Added logic to create a hierarchical map of property - constraints
Updated BasicSolver constructor to take hierarchical constraint map

Added logic to BasicSolver to handle multiple constraints on the same
property that apply to a given hierarchy level. This causes issues
particularly in the BasicSolver as, we currently handle each constraint
independent of others.
Added sample for constraint merging
Removed constraint merging logic from BasicSolver
    BasicSolver does not require merging constraints. It uses a brute
    force approach and thus does not suffer from constraint ordering.
Working on constraint merging for ComplexSolver
Updated Column class to store Reference rather than String

Updated several other classes to reflect this refactoring
	modified:   src/development/hierarchical_split/HierarchicalSplit.java
	modified:   src/internal/parser/containers/Reference.java
	modified:   src/internal/parser/containers/condition/BaseCondition.java
	modified:   src/internal/parser/containers/expr/Expr.java
	modified:   src/internal/parser/resolve/Column.java
	modified:   src/internal/parser/resolve/Result.java
	modified:   src/internal/parser/resolve/constraint/BasicSolver.java
Fixed bug in QueryResolutionEngine where Result.indexOf(pattern.toString())
was being used despite recent changes that changed this method signature
Fixed a bug in ConstraintSolver where relatedPropertiesMap.get()
would result in a NullPointerException.
    This occurs when there are no higher level definitions. With regard
    to relatedPropertiesMap, resolveDefinitionDependencies() ignored
    the RANDOM definition type resulting in no entry for the Tile level