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.