Export Contexts, add Serialization

In order to allow specialization of hash-based data structures to specific structures, we must export the contexts of the hash:

```
-- From Crypto.HMAC:
newtype MacKey c d = MacKey Data.ByteString.Internal.ByteString

-- Consider the application code:
data KeyDatabase = KDB { Map UserId (MacKey someContext SHA256) }
```

That `someContext` type should be able to be fully specified.