Rework hmac implementation
The current "black box" hmac implementation implies that a hmac state contains three buffers of size corresponding to the hash function's block size. Should probably deprecate but keep current public hmac functions and HMAC_CTX macro for backwards compatibility, but redefine the concrete structs like hmac_sha256 to be different and smaller. Should possibly also redefine hash context, like struct sha256_ctx, in terms of a state struct + buffer.