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: While you're in this code making changes, consider renaming "otherSet" to just "other" for consistency.  All of these other methods look like they just use "other".