Avoid boxing ImmutableHashSet<T>.Enumerator

This introduces a pattern that can be applied anywhere to conveniently avoid boxing one's own Enumerator struct without duplicating the body of foreach loops everywhere.

Fixes #211 

If folks like this, I can add a commit that applies the pattern to all the other immutable collection types.
Done. And I agree. I had written using `if` for `MoveNext` initially because I'd forgotten that `MoveNext` has a return value at first. Then when I realized my mistake I didn't go back and switch to the `?:` syntax.