Refactoring of ConstraintInterpreter

Mostly splits up `always` and `suggestValue` and be more manageable