Better encapsulate direct domain access

This patch completely hides the internal domain array in
DiscreteVariable from other classes.
Fix BoundsDecisionVariable

Make the unit tests pass again.