Adjust the HeaderWord union to layout correctly under MSVC
Summary:
MSVC refuses to lay out bitfields in the same byte unless they are the exact same type, so switch the fields in `HeaderWord` to `uint8_t` so they get laid out correctly under MSVC.
As we are directly dependent on it being exactly 8 bytes, and I only noticed this because MSVC was generating a warning due to a value being shifted too far left, I've added a static assert to ensure it is exactly 8 bytes.
Reviewed By: mofarrell
Differential Revision:
D4492198
fbshipit-source-id:
d04ac885a5c12e11c5f4ecc36886264794b30a1d