Added removeThreadLocals() to CryptoUtils

This must be called when a thread using the CryptoUtils is destroyed to
release all thread local variables.
Utilize KeyGenerator to create AES keys

as proposed in #53:

utilize the Java KeyGenerator to create AES keys instead of using raw
byte arrays filled by SecureRandom.