Started implementing a separate encryption class for each file version to make things cleaner.
Merge branch 'master' into FileFormatV3
Got the new class-based encrypters working.
Implemented a compact variable bytelength encoding.
Finished implementing the header for the new dictionary-based encrypter.
Completed dictionary-based encryption and started implementation of its associated decryption function.
Dictionary-based decryption now works.
Lots of fixes; there was an error with the way we were calculating nibble-grams, the solution to which revealed a bug in the way we were decrypting them.  Still testing; not sure if it is completely fixed yet.
Fixed a bug caused by missing items in the dictionary due to randomly generated padding nibbles.  Now the dictionary encrypter is consistently passing the unit tests!
Fixed a bug in which some bytes would get corrupted if dictionary indexes were offset into the middle of a byte.