refactored checkout as a GitCommand
Added sparse checkout support

Removed method for retrieving sparse checkout paths

Moved sparse checkout method inside Checkout Command
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
Merge pull request #123 from Tetradeus/sparse-checkout

Support sparse checkout in the git-client API, checkout is now a command (for easier extensions)
Check mkdir return value in tests
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
Test for trackingSubmodules requires >=1.8.2

Make sure that we have the required version level for tracking submodules.
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.
New SubmoduleUpdateCommand, like CheckoutCommand
Merge branch 'trackingSubmodules' of https://github.com/dbroady1/git-client-plugin into trackingSubmodules

Conflicts:
	src/main/java/org/jenkinsci/plugins/gitclient/CliGitAPIImpl.java
	src/main/java/org/jenkinsci/plugins/gitclient/GitClient.java
	src/main/java/org/jenkinsci/plugins/gitclient/JGitAPIImpl.java
	src/main/java/org/jenkinsci/plugins/gitclient/RemoteGitImpl.java