Add hmac_supported method to backend

Previously we were implicitly assuming that if a hash was supported then its hmac equivalent was as well. This is not necessarily going to be true for all backends.