Instance Wrapper for UnionEnum.
Provides safe assignment and explicit casts.
TODO: Use opImplicitCastTo instead of opCast when it becomes available in DMD.
TODO: Join logic for ChainEnum and UnionEnum into common and then define:
- UnionEnum: only names must be unique
- StrictUnionEnum: both names and values must be unique
TODO: Move to std.typecons (Type Constructor) in Phobos when ready.
Extensions to Enumerations.