This adds a framework for upgrade testing where we split a
functional test in half, running the first half on the previous
commit and the second half on the current commit. This may allow
us to catch upgrade errors which are otherwise difficult to find
in tests because they require data generated by old/removed code.
This does not run the test, since it operates on the current and
prior commits, only a commit that follows this one can run the
job successfully.
Change-Id: I9d4d4af42fb1f684a88ec5a7e747b132423696f1