Refactored graph and introduced tree package

TreeFiniteDomainSolver is still a work-in-progress, as constraints
aren't supported yet.
Added prior assignments to valuesFor in Searchable
Added ConstraintPropagation

It's very much a first cut and will have test coverage introduced
immediately.