Add brotli decompressor

This commit is for the decoder for brotli compression format.
Brotli is a generic byte-level compression algorithm.
Fix name collisions with libwebp.

Prefix all externally visible function names with Brotli and
make all other functions static.
Make the brotli decoder more C90-compatible.

(1) Move all variable declarations to the beginning of the block.
(2) Remove 'z' printf modifiers.
(3) Fix 'comma at the end of enumeration list' warning.
Add brotli compressor

This commit is for the encoder for brotli compression format.
Brotli is a generic byte-level compression algorithm.
Updates to Brotli compression format, decoder and encoder

This commit contains a batch of changes that were made to the Brotli
compression algorithm in the last three weeks. Most important changes:

  * Added UTF8 context model for good text compression.
  * Simplified context modeling by having only 4 context modes.
  * Per-block context mode selection.
  * Faster backward copying and bit reading functions.
  * More efficient histogram coding.
  * Streaming support for the decoder and encoder.
Added Brotli compress/decompress utilities and makefiles
Add draft specification of the brotli format
Updates to Brotli compression format, decoder and encoder

This commit contains a batch of changes that were made to the Brotli
compression algorithm in the last month. Most important changes:

   * Updated spec
   * Changed Huffman code length alphabet to use run length codes more
     efficiently, based on a suggestion by Robert Obryk
   * Changed encoding of the number of Huffman code lengths (HLEN)
   * Changed encoding of the number of Huffman trees (NTREES)
   * Added support for uncompressed meta-blocks
Support for OSX build; tested using OSX 10.9/clang-500.2.79
Fix Microsoft VisualStudio build of brotli

- Move all variable declarations to the beginning of the block
- #ifdef-out read/write calls
Fix Microsoft VisualStudio 64-bit build of brotli
Use C-style comments in the brotli decoder.
Brotli format change: improved encoding of Huffman codes

This change removes the redundant HCLEN, HLENINC and HLEN
fields from the encoding of the complex Huffman codes and
derives these from an invariant of the code length sequence.
Based on a patch by Robert Obryk.
Bug fixes for the brotli encoder and decoder.
Small update to brotli specification.

Clarify how to recover from error conditions caused by overflowing
block types and symbol values.
Brotli format change: small improvement to the encoding of Huffman codes

Combine the HSKIP and the simple/complex Huffman code type bits.
Fix -Wconversion compiler warnings in the brotli decoder.
Updates to Brotli compression format, decoder and encoder

This commit contains a batch of changes that were made to the Brotli
compression algorithm in the last month. Most important changes:

   * Fixes to the spec.
   * Change of code length code order.
   * Use a 2-level Huffman lookup table in the decoder.
   * Faster uncompressed meta-block decoding.
   * Optimized encoding of the Huffman code.
   * Detection of UTF-8 input encoding.
   * UTF-8 based literal cost modeling for improved
     backward reference selection.
Add the initial version of the static dictionary and transforms to Brotli.
Enable the static dictionary in the Brotli decoder.