Added developer facing API - SecureData, CompoundKey, SecureDataBlob, SecureDataTest

SecureData - this is the developer facing API. The developer uses SecureData.getKey(...). They specify the security services that they want the key to provide and then SecureData will generate and return a CompoundKey (see below) that provides these security services.

CompoundKey - this class is used to group together several Keys to perform different operations, for example a signing key and an encryption key. Provides functionality to getSecureData (transform data according to security services), and to checkAndGetData which checks any HMAC or digital signature on the data and decrypts it if it has been encrypted, returning the raw data.

SecureDataBlob - this class represents data that has been transformed according to certain security properties. Data may be encrypted, signed, and/or have an HMAC.

SecureDataTest - JUnit tests testing securing and retrieving data for all possible combinations of security services.
We need some sort of identifier for each of the keys that were used to create this secure data blob to undo it/verify it