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.
can you do it in a seperate pull request. It doesn't really make sense to be part of this one