Switch to the gradle build system from maven
Make the protocol build task properly depend on the scanner

Previously, it would try and create the ant task and simply delay running
it.  However, if there are any compile errors in the scanner code, this
will cause it to fail to build.  With this commit, it waits to import the
ant task until the scanner has been rebuilt.
Remove the unneeded client/server separation in the scanner
Add initial support for protocol versioning
Add version protections for server-side code