src: simplify UnionBytes
Before this commit it was using a tagged union to store the one-byte and two-byte pointers.
From a sizeof(UnionBytes)
perspective that makes no difference - there
is a hole between the tag and the union - and it makes the code just a
little harder to reason about, IMO.