Add option to create snapshot manifest from a branch point

Currently the snapshot manifests are stored like this:

refs/heads/m/master/some/manifest/default.xml
  a---b---c---d---e

and if you tag commit 'a', you can use git-describe to reference all
subsequent commits.

This plugin also let you branch a set of repositories described by a
manifest and create a new manifest to point to the same set of
repositories at a new branch.  So for example, you can tell the plugin
to branch at the snapshot manifest stored in commit 'c' and create a new
manifest back in the subscribing repository (master branch with path
release/1.0.xml, for example.)  When any of the projects in the
subscribed repositories change, a snapshot manifest will be created.
In previous implementation, the new snapshot manifest branch is created
from head of the master branch (assuming pointing to 'a'),

refs/heads/m/master/some/manifest/default.xml
  a---b---c---d---e
   \
    f
refs/heads/m/master/release/1.0.xml

With this commit, the user will have the option of pre-creating the
snapshot manifest of the newly created manifest at the point branching
was requested.

refs/heads/m/master/some/manifest/default.xml
  a---b---c---d---e
           \
            f
refs/heads/m/master/release/1.0.xml

This will allow a system-level versioning using git-describe.  For
example:
  a---b---c---d---e
  ^        \  ^
  v1.0      \ v1.2
             \
              f---g
                  ^
               v1.0-4-gc0ffee1

Change-Id: Ifba982d35c6f6af55200474d5ec090ba9758de36
6 files changed