Added methods resolveRelatedProperties and
resolveConstraintDependencies to ConstraintSolver
We now have limited backtracking
    Previously, when the BasicSolver failed to satisfy any of the
    specified constraints, it would reinitialize *everything*.
    This commit introduces a working partial-backtracking solution.
    It works by resolving the definition space into sets of related
    properties and then reinitializing only the set of properties
    that the BasicSolver failed to satisfy.

Updated BasicSolver to take relatedPropertiesMap as part of constructor