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