Making the enum type iterable seems very strange. Why not just provide a `values(::Type{Enum})` function that provides a copy of the values array? Or maybe values should be stored as a tuple, which will be both immutable and iterable.