[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 the same filesToUpdate as in the ReleasePluginExtension.  If so, how does that become a global variable?