[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.
I don't understand this comment.  What's components.java?