Decrease nesting.
Add factory method for FiniteDomainVariable.
Fix variable name error in cardinality constraint.
Separate (immutable) domains from variables.