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.
Nit: Consider changing either Current or MoveNext so that they're consistent as to whether they use ?: or if/else. Personally I like ?: for cases like this.