Move assignment state back into variables.
Move state save/restore into separate class.
Rearrange solver methods.
Add interval set.

Maybe this should be adapted to a balanced tree storing intervals.
Change domain of integer variables to IntervalSet.
Fix normalize method for empty interval set.
Refactor integer constraints.