DC context and encode iteration

This set of changes brings the full DC coding context to be available for the underlying model (has the symbol, its last MTF rank, and the distance limit). It also features encode iterator, with encoding/decoding being done much more symmetrical. Alphabet is now always processed as a fixed-size array of initial distances.