=====================================================================
                         C H A N G E   L O G
=====================================================================

Version 0.2.2b  2010-02-17
    Provided unit tests.
    Move self-test code into a function.
    Work around lack of support for method descriptors in doctest.
    Fix silly bug in _MonoSubCipher abstract base class.
    Better/more comments in source code, including justification for some
    unusual implementation details. (Use of class object as functor.)
    Move static method ceildiv into stand-alone function.
    Simplified RailFence.iter_rails method.

Version 0.2.2a  2010-02-09
    FIRST PUBLIC RELEASE
    Refactored common code into abstract base classes.
    Added support for iterables (streaming) to additional ciphers.
    Refactored Playfair to support iterable arguments as well as strings.
    Added Playfair6 and Playfair16 ciphers.
    Added RailFence (encryption only).
    Optimised frob in the case of key length == 1.
    More documentation and doctests.

    Known issues:
        No decryption of RailFence.
        Chaff and Vigenere do not support iteratables other than strings.
        doctest.testmod doesn't see tests in some methods: see reported bug
        http://bugs.python.org/issue4037

Version 0.2.1a  2010-02-01
    Added ability to stream selected ciphers (rot13 and family).
    Fixed a mistake in the algorithm for the Keyword cipher.

Version 0.2a    2010-01-31
    Add rot5, rot18, rot47, Keyword, Affine ciphers.
    Improved documentation and more doctests.

Version 0.1a    2010-01-15
    Initial version, including rot13, Caesar, atbash, Playfair, RowTransform,
    Chaff, Vigenere, frob ciphers.



