Remove `Encoding` and `Decoding` type-classes.
Try to support multiple CQL versions.

Add support for most of CQL3 and apply extensive type-level versioning.
Remove V2 directory.
Use exact versions in Codec.
Tweak version bounds.
Give up on type-level versioning.

It proved to be not flexible enough causing significant code
duplication. This commit removes type-level versioning completely and
uses an explicit version value to distinguish relevant code paths
dynamically.
Use `Data.IP` and fix `Register` request.
Fix byte order of `PortNumber` encoding/decoding.
Merge branch 'v3' into develop