Cloner: set zuul_branch on ref-update events

The `ref-update` events do not contains a ZUUL_BRANCH which is needed to
fallback to an appropriate branch.  Given a release branch `2.x` and a
tag 2.1, we would want to checkout the `2.x` branches of the
repositories.

We can find the branch a tag belong to by using `git branch -r
--contains` on a clone of the project that had the reference updated,
thus set ZUUL_BRANCH to match the fallback system expectation.

To do so, we need to first clone all repositories and on the repo that
had the ref update find the branch that contains the ref. Then we can
apply the Zuul crafted references and fallback to the zuul_branch.

We would then be able to add zuul-cloner support for ref-updates events
( https://review.openstack.org/#/c/137675/ ).

* Move update() and prune() from prepareRepo() to cloneUpstream() so the
  first stage is properly up-to-date.
* Whenever zuul_branch is missing, find the branch containing the ref.
* Rename prepareRepo() to applyZuulState(). It no more clones anything.

Change-Id: I01bddc932f4b7b775460526ece02e6d26ec6fde3
cloner: support for ref-updated parameters

When a job is triggered by a `ref-update` event, zuul-cloner complains
about missing parameters:

    zuul-cloner: error: Some Zuul parameters are not properly set:
	zuul_branch
	zuul_change
	zuul_patchset
    Define them either via environment variables or using options above.

The reason is that change and ref have slightly different parameters
(see zuul/launcher/gearman.py).

Split the list of expected Zuul parameters in three set, the commons one
being parameters shared by both change and ref events. An OrderedDict()
is used since the structure is reused in the argparse help message.

The parameter validation will reject a command line mixing parameters
from both change and ref since it does not make sense.

When parameter from one of the set has been set, hint about the missing
parameters for THAT set which would dramatically help. Else point to
--help which has all the details.

Downstream bug: https://phabricator.wikimedia.org/T76003

Change-Id: Ic920c2c8fe7d4159a4094ce8af5f07962f22a4af
Merge zuul-cloner support for refupdates

e5b0a05 - cloner: support for ref-updated parameters
          https://review.openstack.org/#/c/137675/3

2bbb629 - Cloner: set zuul_branch on ref-update events
          https://review.openstack.org/#/c/138433/3