Use "clone && fetch" rather than "clone --branch"

In order to support building remote git reference that are not remote
branches, we need to change from using "git clone --branch $ref" for
checking out remote revisions, to using "git clone && git fetch $ref".
This is due to the fact that "git fetch" can fetch a remote refspec that
is not a proper branch, while "git clone" is unable to do this.

This is a useful feature when trying to interface with a GitHub
project's pull requests. GitHub creates references in the form of
"refs/pull/$N/head" and "refs/pull/$N/merge" for any pull requests
created. With this change, one can how use the "--branch" option to
buildbot commands to test against a given pull request.

For example, given a project with pull request #1 open, the project's
GitHub repository will have references called "refs/pull/1/head" and
"refs/pull/1/merge". Assuming the BuildBot master is configured
correctly, a user could submit a change request against this pull
request like so:

    $ buildbot sendchange --branch refs/pull/1/head ...

Without this change, the "git clone" command used would fail due to it
using the "--branch refs/pull/1/head" option and failing to find the
"refs/pull/1/head" branch in the upstream repository.

Signed-off-by: Prakash Surya <surya1@llnl.gov>