Documentation

Encode aggregate into a ByteString representation. The
representation should contain some metadata (a UUID for example)
which can be used to check reliably whether the encoded
representation is valid upon decoding. This can be used if the
actual aggregate structure changes.