ENH: Enum class as drop-in alternative for NamedEnum
- the NamedEnum wrapper is somewhate too rigid. * All enumerated values are contiguous, starting as zero. * The implicit one-to-one mapping precludes using it for aliases. * For example, perhaps we want to support alternative lookup names for an enumeration, or manage an enumeration lookup for a sub-range.