In the process, the following changes are done to CBC code:
- `new` detects when a spurious extra positional parameter is passed
- `new` accepts 'iv' or 'IV' keywords, but not both
- the cipher object has both 'iv' and 'IV' attributes, for convenience
- `encrypt` and `decrypt` cannot be intermixed
- some ValueError exceptions have been converted to TypeError when
they refer to erroneuous API usage