Generic enumerator interface to support some form of enumerated values. Values in the enumeration are assumed to be unique