Remove all the .clone calls in the protocol.
Use sync_channel to dispatch frames.

This will handle the case when we’re reading more frames than
we can consume. Should help with the number of unacked messages.
Add example producer & consumer.