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.
Merge remote-tracking branch 'okennedy/master' into working
Merge remote-tracking branch 'okennedy/master' into gurupras@buffalo.edu
Fixed few warnings in BasicSolver
Merge branch 'working' into gurupras@buffalo.edu
hacks to get Q4 and Q5 working; horizontal query