[JAVA-1390] Phase 2: doing the release. 

Working release process.  It fits together end to end but it's not pretty, and could use some tidy up, however I thought it best to get some feedback on it as it is. The last couple of stages were more complicated than I expected.

You can test the release by running ./gradlew release -DreleaseVersion=3.0.0

Roll it back by removing the 3.0.0 tag, deleting the draft release notes and resetting the current branch back two commits.
Is this just a sanity check?  In maven release process, IIRC, if your pom contained a version like 3.0.0-SNAPSHOT, it would assume the release version is 3.0.0.