improve syntax of constraint DSL

add DSL builders
rename Sum -> SumEq
allow Sum(...) #== Var(...)
Var(x) * Var(y) #== Var(z) etc
improve syntax of Constraint DSL, fix type problem

Any popagates; Map is invariant etc
add mixin to allow Constrains inside Constraints
add recursive intValueConstraints

generates constraints that ground all ref variables to the intvalues of
a Model also deeply in submodels
add generator functions forAll, sumForAll

tidy up implicits on Seq[Constr[T]]