An instance of Protocol glues a Framing implementation to a serializer
(ProtocolWriter) and deserializer (ProtocolReader). It constructs, as
needed, a serializer to construct a frame with a given protocol, or a
deserializer from a frame into a stream of deserialized objects.