Updated encryption/decryption functions to use AES128/CBC instead of AES128/ECB

ECB always encrypts a particular block of plaintext into the same
ciphertext, which makes it easier to decrypt the data.  See the
wikipedia [article on block
ciphers](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)
Updated tests and added imports/exceptions

This commit updates the unit tests for the new encryption routine. It
also adds some missing imports and exception declarations.
Adds a tool for generating keys

This commit adds a simple CLI tool for generating AES-128 keys and the
accompanying JSON object for a JSONKeystore file.
Merge pull request #9 from jsumners/feature/AES128-CBC

Updated tests and added imports/exceptions
Merge pull request #10 from jsumners/keygen-tool

Adds a tool for generating keys
Merge pull request #11 from epierce/feature/AES128-CBC

Merge features/AES128-CBC into develop
Documentation update
Increase version number
Merge branch 'release/0.4'

* release/0.4:
  Increase version number
  Documentation update
  Adds a tool for generating keys
  Updated tests and added imports/exceptions
  Updated encryption/decryption functions to use AES128/CBC instead of AES128/ECB
  Prepare new development branch
Merge branch 'release/0.4' into develop

* release/0.4:
  Increase version number
  Documentation update
Documentation fix
Merge branch 'hotfix/0.4.0.1' into develop

* hotfix/0.4.0.1:
  Documentation fix