* pull `BROTLI_MAX_BACKWARD_LIMIT` to constants
* split generic and Zopfli backward references code
* pull hashers init and stitch invocation to encoder
* make `dictionary_hash` a compilation unit
* add `size hint` parameter
* add new hasher
* use `size hint` to pick new hasher for q4
* modernize clz guard (fix#495)
* move `hash to binary tree` to separate file
* add `Initialize` and `Cleanup` to all hashers
* do not raise OOM if malloc(0) == NULL (fix#500)
* move `common/port.h` to `includes/port.h`
* replace magic more magic numbers with constants
* artificially limit window size to 2^18 for quality 0 and 1
* use fixed shifts for quality 0 and 1 hashes
* removed `BrotliEncoderWriteMetadata`
* added `BROTLI_OPERATION_EMIT_METADATA` instead
* deprecated low-level API
* fixed MSVC warnings
* add Brotli*TakeOutput methods
* * flushing now doesn't require additional call
* add Brotli*Version methods
* moved public headers to 'public' directory
* removed C++ API
* do not assume STDC_VERSION is defined
The new modes process the input data in independent blocks,
using backward references only from within an input block.
The new modes can be used by specifying quality 0 or quality 1,
the old quality 1 and quality 2 modes are renamed quality 2 and
quality 3, respectively, and the old quality 3 mode is removed.