A common enumeration struct based on generics and reflection that allows you to quickly define enumerations and use a set of useful default methods.