Reworked some of the low-level functionality.
The range coding is now done by special BitEncoder and BitDecoder classes.
All encoding and decoding classes require the range coder as method parameter instead of constructor parameter.