Support git branch names on buildpacks

# Background

During development, users debugging buildpacks often need to push test
commits and then revert them, which messes up the buildpack's git
history. So there is a need to specify a branch name as well as the
git URL of a buildpack.

During production, multiple levels of a given buildpack may be used.
The natural way to manage these is with a git tag rather than a new
git repository for each level. So there is a need to specify a tag
name as well as the git URL of a buildpack.

# Implementation

Support a branch (or tag) name as part of a buildpack git URL. The
syntax of the URL passed to --buildpack will be:

    <git repository URL>+<branch name>

Parse the buildpack parameter into a URL and a branch name and pass
the branch name, if it was specified, to git clone.

Assume that "+" is not part of the URL or the branch name. This is not
impossible, but is very unlikely and is a restriction of this support.

Add a test to exercise the branch name syntax.

[#50081697]