OkupyCipher: make block_size a public property.
test_cipher: respect block_size.
Raise ValueError on short ciphertext.
test_cipher: check if wrong ciphertext length triggers ValueError.
SSL auth: decrypt session ID in forms cleanup.

Also, raise ValidationError for broken ciphertext.
ssl_auth: check decrypted session ID validity.

Before putting encrypted session ID in the form, we place it in session.
Therefore, we can easily check if given session ID was valid by
confirming that it's in the session, and it is the same.
Move session ID encryption, decryption & validation to SessionRefCipher.
SessionRefCipher: do more assertions about cache key format.
Add random prefix to randomize generated encrypted session IDs.

Since session keys are usually multiply of block size in length, we need
to add a random prefix to get different values for the same ID.
Revoke used encrypted session IDs.
Move RevokedToken to common and make it more universal.
SessionRefCipher: atomically revoke IDs using RevokedToken model.
RevokedToken: fix timezone issues.
Add unpadded base32 en-/decoder to crypto.
Encode encrypted session ID using base32.

This will be more friendly to SSH input.
IDCipher: use unpadded base32 as well.
Use AES as OkupyCipher.

This gives us larger block size == more awesome tokens.
'Pack' session id into binary string before encrypting.

Since it's basically base36, we can treat it as base64 and pack 3:4.
This way, with the random padding added, we end up taking one block
of ciphertext less and we have shorter and more unique tokens.
Move crypto-related stuff to okupy.crypto.
Switch ciphers to output urlsafe base64.