added the withGadget function
simplified hash to use withGadget
make the Hash type suitable for HMAC
added the HMAC primitive