Add MACContext and switch HMAC and CMAC to use it.

Fixes #1319.

Thoughts?
So just to be clear, I should remove the `algorithm` property from MACContext?