Ensure that a BlockCipher can only be used for one operation

This prevents trying to call encrypt() and then decrypt() on a
block cipher. It also enables finalize() to know what type of
finalization to call.