support to update a repository

We sometime want to update a repository without fetching an actual
refspec. A typical example is to fetch tags, since I did not manage to
pass -t to git.fetch(), I am using instead the GitPython repo.update()
calls which binds to `git remote update`.

Change-Id: I0d989dfc1f31ede6c79ccdd1d5b3968978a418ab
update remote on ref-update

Whenever receiving a ref-update event, for example when a tag is
created, deleted or changed, the local Zuul git repository would not
reflect the change.

This patch force a git remote update on the local git repository so the
Jenkins git plugin can actually find the new tag. This is done before
enqueing the change in the pipeline to only update the remote once.

Change-Id: I87a29aa15855bfb367f03da3e15cd8a733b757fd