Work around breaking change in git

In git 1.7.10 shallow clone behavior was changed from shallow cloning
all branches by default, to only shallow cloning the branch being
checked out. Unfortunately, this breaks prior and expected behavior in
Chef as, on subsequent deploys it is not possible to switch branch,
because no other branches exist in the cache-copy of the repo.

To fix this we must use the `--no-single-branch` flag when performing
the inital clone. Unfortunately this flag is not supported by git
versions prior to 1.7.10, so we must check the version of git before
deciding if the workaround is required.

It probably makes sense to make this prior behavior optional in a future
patch, however this one just seeks to give consistent results across all
versions of git.