Refactoring packages to allow two different implementations using two different libraries
Further refactoring to separate the implementation from hmac library's internals
Adding Crypto based implementation and testing
Documenting some details