BitField: Explain the template madness which is going on to support enums as storage type.