Adaptive Probability Maps

The PR features a basic APM implementation, using Matt Mahoney's "bbb.cpp" as a reference. Gate is 
operational but slow due to the lack of function-generated fixed-size tables (to be fixed when Rust matures). We can have tables if we restrict the ```WideProbability``` and ```FlatProbability``` sizes to 4K (the tables are in commit history for that reason).

APM allows for flexible context mixing when coding bits, and is successfully used for BWT output encoding by "bbb" and "https://github.com/IlyaGrebnov/libbsc".