Invariant assertion logic moved to helper method
Improved InvariantViolationException generation

Invariant assertion process now wraps InvariantViolationExceptions thrown during invariant satisfaction (as might occur in the case of a composite invariant)