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
SigningExcpetion seems unneeded. We could make a more generic Exception for the various encryption operations. The end user doesn't really care that signing was happening, just that an Exception occured when it should have worked.