BitField: Simplify the code a lot and extend support of possible storage type.

Custom storage types are supported if the following things are defined on the storage type:
- casting 0 to the storage type
- bit shift operators (in both directions)
- bitwise & operator

Additionally, enums can be used as a storage type as well.
BPMemory: Expose the pixel_format and zformat fields in PE_CONTROL as enumerations.