The code previously was not very careful about verifying the
compression parameters. This led to cases where it failed to
reject invalid compressed data at the beginning. The invalid
left shift was one symptom of this.
The code is now more careful: It verifies that the compression
parameter byte exists and verifies that the maximum code size
is <= 16 bits.
This also includes some new tests to verify that truncated or
otherwise invalid compressed data is rejected.