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