Add Constraint Solver
Refactor Constraint Solver
Fix non-binary constraints
Remove dead code