Implement Run and SubRun fragments
To support a more flexible output-file handling scheme,
SubRun objects will represent fragments of a run and subrun, improving the
SubRun object semantics, which are currently ill-defined. A product created for a given run or subrun fragment will have the option of being combined with the same product from other fragments corresponding to the same run and subrun IDs.