This is the writer dual to BitGet. It allows one to append bits in a monad
and get a strict ByteString as a result. Bits are appended from the MSB of
the first byte towards the LSB of the last byte.

This is best suited to small bit-fields because it accumulates bytes using
snoc, so large results will cause a lot of copying. It would be possible
to switch to using something similar to the Builder monad if need arises.
However, since most protocols only have small bit fields, this should
suffice for many cases.

Append a left aligned ByteString where ByteString has a partial byte
with the given number of valid bits, from the MSB downwards. The number
of such bits must be 0..7. (A normal ByteString, which all bytes full
would use 0)