Removed erroneous break statement in BasicSolver.evaluate()
Added sample files for complex aggregate expressions
Fixed minor bugs in BasicSolver

Commented all private methods of BasicSolver
Updated some sample definition filenames
Moved some of the static methods in BasicSolver to ConstraintSolver

Rewrote ConstraintSolver.validateDefinitions() method to correctly
handle dependencies.

Previously, validateDefinitions was forcibly checking that every
constraint property have a definition at every level of the hierarchy.
This change ensures that only the appropriate dependencies are checked.
Added invalid_definitions sample files

TODO: I believe this is a negative test case. It should ideally be
      wrapped in a JUnit test case so as to check for exceptions.