Change behaviour of git fetching.  A function fetch_git_branch is provided, which fetches a particular named branch from a given URL (and for
convenience another function, fetch_git_branch_with_fallback_urls, is also provided).  The cache, where used, will continue to store the entire git
clone, but when fetch_git_branch is called, the repository will be fetched (with immediate clone or copying from the cache), the requested branch
checked out, and .git removed, so the work directory will not look like a git repository.  (This will make it more transparent to change to other
download methods at a later stage, except of course that any tarballs etc downloaded by other methods will need to be unpacked.)

As yet untested.