Using secure block cipher mode

So I initially was only editing the random mode to the pyCrypto `Crypto.Random.random` method, when I noticed that the pycrypto defaults to ECB mode, which is sort of bad (I opened issue #27 which explains in a bit more detail why)

Rather than just offer a problem and not a solution, I edited the library to support better block cipher modes while retaining backwards compatibility, by allowing a field attribute `block_type` to be set, and using the better block ciphers only if that is set.

I also added a bit to the tests to test that this does in fact work as intended, and all existing tests pass.

I'd highly recommend a roadmap that eventually phases out the old behavior and makes the CBC mode default, but I figured invalidating everyone's data abruptly was a bad way to go about it.

Previous request:
The pyCrypto library includes a random method that's supposedly more "cryptographically secure" than the python random library.

I updated the imports to use this library instead of the python one.