Add MACContext and switch HMAC and CMAC to use it.

Fixes #1319.

Thoughts?
Since this is part of a deprecation cycle (even if it won't actually ever raise a warning) could we have a comment with DeprecatedIn07 so we can find it and remove it in the ninth release?