Allows mapping from a type to an index
This trait is unsafe because there are a few other requirements that need to be met:
- The indexes of self need to be contiguous and need to be returned in order from
- Iter needs to return exactly N items (this is checked in debug mode)
The number of items or variants that this type can have.
The number of bytes it will take to represent this type in a set.
This must equal