Allow use of Deferred-Sum model in Lzp3 compressor.

A quick test showed that the deferred sum model is actually 43% slower
than the move-to-front model we were previously using.  But decoding
is 38% faster.  Hmph.  Maybe the results would be closer if we used
the deferred-sum model only in contexts not likely to be sparse (ie,
where we expect to see almost every possible symbol at least once).
Add state cloning to DMC implementation.
Add -t option to dmcjs binary to select de/compression type.
Adjust default DMC parameters to match those found good via benchmarking.
Add distance model used by gzip/deflate; add factory interfaces.

Unlike our previous LengthModel, gzip/deflate adds the second-to-highest
bit of the length to the initial code (the "log-length" symbol).  Refactor
so that Lzp3 uses this new model.  In the process add a uniform "factory"
method that lets us glue different types of models together more easily.
Also change the maximum probability in the EscModel used by Lzp3, which
improves compression quite a bit (by allowing quicker adaptation,
presumably.)
Factor out BitStream and Stream implementations.
Slightly improve EscModel by reducing escape prob to zero when possible.

This makes a 2-symbol escape model behave reasonably, instead of always
reserving a fractional bit for an impossible escape.
EscModel: Exclude seen symbols when coding an escape.
EscModel: speed up decoding of escaped characters by keeping a sorted array.

Disabled by default, since it slows down the model by about 50%.
Rename EscModel -> MTFModel (just about every range coder model has escapes).
Make it easier to change the max model probability for Lzp3.
Factor out 'NoModel' -- which makes no predictions & saves no space.
Factor out 'RescalingHuffman' (into Huffman base class).