Enforce use of ProtocolVersion enum.
Factor code in Frame.create.
Pass version to Coder/Decoder methods instead of having one instance per version.
Introduce BatchProtocolOptions.