Fix deprecated JGit.setRemoteUrl(String, String, String)

Was not being tested from the unit tests, and when called was not
performing the expected operation.  The implementation now uses the
same pattern as JGit.setRemoteUrl(String, String).  That is now called
by unit tests, and passes the tests.

Also added calls to submoduleSync() without any assertions of the
results of the call.  Increases coverage slightly and will detect if
submoduleSync() throws an unexpected exception.  Further detection of
submodule errors will need to wait until the submodule tests have been
further extended.
Upgrade to JGit 3.3.0
Adapt test_fetch to git 1.9 new behavior of "fetch -t"

Git versions prior to 1.9.0 would only fetch tags if "fetch -t" were
called with no refspec argument.  As of git 1.9.0, "fetch -t" now
fetchs tags and versions.
Add test of msysgit 1.9 core.longpaths setting

The msysgit 1.9 release includes a new core setting, core.longpaths,
which allow content file names longer than 256 characters.  The option
is only available with msys git.  There is currently no support in
git-client-plugin for the longpaths setting.  This is only a test to
confirm that the longpaths setting in msysgit 1.9 works as expected,
in case the plugin chooses to use that setting in the future.

The JGit implementation already works with long paths.

The Linux C git implementation already works with long paths.
Enable getAllLogEntries test again - fixed

The getAllLogEntries method seems to return a time ordered list of
commits, but the granularity of the time ordering seems to be only to
a single second.  The namespace test creates three branches very
rapidly, each with a distinct commit.  That seems to highlight a
difference in the time ordering of the results of C git and JGit
getAllLogEntries.

Work around is to clone from the original repository with a reference
to the local mirror, rather than cloning from the local mirror
directly.
Avoid clone_ on windows - it leaves an open file
Test failure cases deleting branch and tag, and reset with no HEAD
When cloning, next to remote URL, also set fetch refspec.
Added unit test checking for remote fetch refspec in config of cloned repos.
Merge pull request #121 from drvdijk/master

When cloning, next to remote URL, also set fetch refspec.
Allow tracking submodules.

Git>=1.8.2 allows the ability for submodules to track the tip of a branch
versus using just a single SHA-1 for the submodule, and this commit allows
that for the CliGitAPIImpl.  JGitAPIImpl just gets a "not implemented".
Test case for updating a tracking submodule
refactored checkout as a GitCommand
Test for trackingSubmodules requires >=1.8.2

Make sure that we have the required version level for tracking submodules.
Added sparse checkout support

Removed method for retrieving sparse checkout paths

Moved sparse checkout method inside Checkout Command
Only add --remote if git is >= 1.8.2

git submodule update --remote will only work for versions of git >= 1.8.2.
So, force check it here.  If it's not the version expected, then we won't
be able to do the update properly and the using project will have to update
the SHA-1 in it's .git/config for this module to get the latest changes.  So,
basically, if not 1.8.2, default back to original behaviour.
Removed unused method retrieveSparseCheckout
Removed unused noCheckout field since noCheckout behaviour is obvious
Added test coverage for null sparseCheckoutPaths parameter value
Added findbugs NonNull Check for sparseCheckout method