feat(client): check client version against the server

This PR validates that the client and the server are approximately the same version. Patch releases are considered non-breaking and therefore will not print out a warning. If they are different, a warning is printed to stderr.

closes #554