support for git branch promotion strategies

This allows drone to be used as a pseudo-git-pipeline; the deploy step
specifies branches to promote from and to. For example, `master: passed`
instructs the deploy step to promote to `passed` if we're the `master` branch
and just went green.

The way --force behaves with this as we implemented it may seem weird. I'm not sure it actually worked before; it would make a commit and then just push the original commit to the branch. This changes it to simply amend the previous commit and force-push as a new SHA (otherwise drone will just show the same build, as the uniqueness is SHA1+Repo, not SHA1+Branch+Repo).