EncryptedRandomAccessThing, MessageAuthCode, and CryptBitSet

This is EncryptedRanomdAccessThing which toad will be using in his db4o replacement. I am still in the process of writing docs and unit tests for it and need to implement a few more fixes nextgens suggested. This also includes my KeyGenUtils PR and requires BouncyCastle 1.51.