Invariants can now override ToString for a nice InvariantViolationException message
Added missing null argument check in InvariantSetFor