Dequeue changes when new patchset created.

When a new patchset is created for a change that is in a pipeline,
cancel running builds and dequeue that change (and possibly
dependent changes that can no longer merge).

Make this optional (and document the option).

Fixes bug 1022643.

Change-Id: I8f591956cf86645443e4b6075b8cdfc95a939e4f
Reviewed-on: https://review.openstack.org/20948
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Dequeue changes if they have no hope of merging.

In the DependentPipeline remove changes if they have absolutely no
chance of merging (all possible merge combinations fail). This allows
zuul to remove changes as soon as possible when it is known that they
cannot merge and continue testing the remaining changes.

Fixes bug 1123329

Change-Id: I97af03cca997541f6a8b3fb519d2a44825dbd937
Reviewed-on: https://review.openstack.org/21723
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins