Added HMACKeyVersion, HMACKeyVersionTest, SigningException, HashKeyVersion

Added:
HMACKeyVersion - class representing HMAC
HMACKeyVersionTest - JUnit tests for HMACKeyVersion
SigningException - custom signing exception
HashKeyVersion - abstract class extended by HMACKeyVersion
I just don't see why we need this. You can always get this from secretKey. It is also strange to even initialize it as secretKey gives you a new copy of the array every call.