Force size constraints in the protocol.
Enable handling of version "04" in addition to version "02".

To handle Version "04" we need to parse the valid protocols versions and negotiate the maximally supported one. This sets up the packet size payloads equivalently.

Furthermore, we need to alter the handshake such that we expect the right version of the VtThello message. We simply force correct operation by verification of the version tag.

And finally, VtTread packets may now contain a 4-byte count. We can handle this by extending our binary pattern match accordingly.
Fix protocol version decoding.

Selection of the protocol is done by the client, not by the server. Fix this by letting the client pick the version. The only way this can work is if the first, VtThello packet is `{packet, 2}` encoded. So do that, decode the version, and then pick the packet encoding format for the remaining packets. Reply in the 2 byte packet format and then split off into either 2 or 4 byte encodings.
Implement `status/2` to be able to query the store about status.
Implement proper termination in the store.