Add job option to hold following changes.

By setting 'hold-following-changes' to True on .*-merge jobs,
jobs for following changes in the dependend change queue won't be
launched until all of the -merge jobs ahead of them complete
successfully.  This prevents wasting resources on testing changes
that have no chance of merging as tested.  It gives up a small
amount of parallelization in order to achieve this (merge jobs will
now run in series, while other jobs may continue to run in parallel).

This should also help ensure that jobs nearer the front of the queue
run sooner than jobs at the back.  Currently, the nondeterminism of
job run-time can cause Jenkins to use limited resources on the back
of the queue instead of the front.

Also fixes these bugs:

* The success/failure messages specified were not being used.
* If a parameter function was applied to a meta-job, it would not
  be applied to jobs that matched the meta-job.

Change-Id: I03cc3e25c554d8aeb1ddb478afaed168a961962f
3 files changed