Move most iter functionality to extra, fixes #7343
Add an EnumSetIterator and EnumSet::iter