[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.
The release version is in the build file.  However, it gets changed as part of the release process, the -SNAPHOT is removed from the version number.  This really interferes with Gradle, as it's already loaded the version number into the config and it's extremely hard to change this (I struggled with the same problem in Morphia, and did a massive hack to get it to work). The alternative is to do the release in several separate steps, instead of a single gradle task