hmac support
update hmac to act more like the hash interfaces
add docs