Add ability to do smart backwards compat testing

Normally, devstack-gate will check out the zuul changes for all of the
projects in the queue ahead of it. In the case where we're testing
a change to master of a client lib against the stable branches, we want
to pick up changes ahead of this change in the queue if they are changes
that correspond to the requested backwards override branch we're testing
against.

To that end, introduce a variable to indicate which branch, other than
"the one that matches the branch of the current change" we would like to
test against. If that is set, override the branches for all other
associated projects, but ensure that we do pick up changes that are
enqueued ahead of it that are for that branch.

Change-Id: I521475e67a0fe259a057aef310423f665573e3ea
Merge "Add ability to do smart backwards compat testing"