implement clean with JGit
document clean() to both run git-reset + git-clean
delegate to JGit implementation for all supported methods
[JENKINS-17013] use first installation as "default" if no explicit "Default" one exists
getInstallation <-> getDefaultInstallation cycle
fix recursive invocation 
(can't use "this" as delegate)
introduce method to commit, passing author/committer
commit time is set via committer PersonIdent,
so wrap committer to set commit time to current date
implement getTagNames using JGit
explicit possible null value for checkout reference
implement addSubmodule
let checkout() support tag/branch as ref string
throw GitException when revParse fails to resolve revision parameter
to ensure full backward compatibility
tag to forceUpdate, so existing tag is moved
force deleteBranch to delete un-merged branches
use JGit Commands for checkout(ref) and push()
[maven-release-plugin] prepare release git-client-1.0.4
[maven-release-plugin] prepare for next development iteration
[JENKINS-17198] attempt to resolve CheckoutConflictException by letting JGit handle detected conflicts
[JENKINS-17212] retry on deletion failure 
may be cause by a temporary lock or race condition running on windows vs antivirus or whatever
use Jgit with symlink support patch
Merge remote-tracking branch 'upstream/master'

Conflicts:
	src/main/java/org/jenkinsci/plugins/gitclient/JGitAPIImpl.java
	src/test/java/org/jenkinsci/plugins/gitclient/JGitAPIImplTest.java