FWIW, I think that 1) there should be only one connection class that wraps a socket that is 2) compatible with any client and 3) that it should the connection class that knows about encoding and decoding messages (even if it's in `classmethod`s).

For this, I think the isolation is good even if it repeats code that will be eventually moved. I think this PR is more geared at providing a place for discussion, so the fact that it doesn't remove the original decoding method.