Apply metajobs in order

Metajobs were being applied in dict key order, which meant that
if more that one metajob matched a job, the actual attributes
applied were non-deterministic.  This was compounded by the fact
that attributes of each metajob were being strictly copied to
the real job, so the attributes of the second metajob would always
completely replace the first.

Instead, keep metajobs in config file order, and only copy attributes
that are non-null.  Boolean attributes are still last-wins, and
so must be set explicitly by each matching metajob.

Change-Id: Ie255658719d5ded1663c3513dae1fc297ce357c4
2 files changed