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
Definately not an expert on this, but I believe HMAC doesn't strictly have to be SHA1 or MD5. I believe SHA2 and beyond can have up to 512 bits