This provides an easy abstraction to read bits at a time from a sequence of bytes, where the number of bits read is not often a multiple of 8.
This class is thread-safe but not reentrant. Unless the caller modifies the bytes array it passed in, in which case all bets are off.