Rewrite of the Huffman Codec.
The encoder now uses a priority queue to generate the Huffman tree and is strict
about node ordering (tie resolution). As a results, it generates a different set
of canonical codes compared to previous versions.
The decoder has been rewritten to bypass the creation of a Huffman tree and generate
decoding tables directly from the codes/lengths. The decoding is now typically
2.5 times faster for Java and 3 times faster for Go.
Streamline the top interfaces (BitStream, Entropy Codecs).
Reserver returned errors to application type errors and use panic() to deal with
exceptional errors (such as I/O errors). It makes the code simpler, more readable
and faster.
Increase stream version to account for the incompatible new Huffman implementation. Fix a bug preventing the last (empty) block from being processed during decompression leading in some cases to the display of the wrong file input size (off by one byte). Other misc maintenance changes.