GitDownloadStrategy: split #fetch into several methods
GitDownloadStrategy: split up submodule update and checkout
GitDownloadStrategy: extract checkout from #stage
GitDownloadStrategy: only fetch from remote when necessary

When we are building from a tag, and that tag is already present in the
cached repository, we don't to hit the network; everything we need
already exists.
GitDownloadStrategy: quiet reset in non-verbose mode
GitDownloadStrategy: default to remote HEAD during checkout