The current static_assert only checks that ObjCObjectTypeBitfields
fits into an unsigned. However it turns out that FunctionTypeBitfields
do not currently fits into an unsigned. Therefore the anonymous
union containing the bit-fields always use 8 bytes instead of 4.
This patch remove the lone misguided static_assert and systematically
check the size of each bit-field.
I don't really see value in ensuring that TypeBitfields is <= 4 bytes, it seems to me that all we care about is the union size, so just <=8 is fine.