feat(controller): check client against API version

Before locking the API version, we needed some way to ensure that
we did not break the client. This was done by comparing the client's
version against the server. If there was a mismatch on the minor or
major release versions (as noted in Semver 2.0.0[1]), the server
would refuse the request. Because we have locked the API version,
it would make sense to test against that to see if the client is
compatible with the API. If not, then the client should upgrade.

[1]: http://semver.org/

fixes #2548
I like outputting the versions like we do now, and I'd specifically call out "client and server *API* versions do not match".