Allow tools to produce a static or determiniable number of output datasets for a collection.

Valid for tools such as a FASTQ de-interlacer to produce a pair or tools that take in a list and produce another list with the same identifiers and count. Does not yet work for dynamic number of output datasets that cannot be determined from the input metadata.

Model:

Model changes to track output collection parts...

Jobs just producing HistoryDatasetCollectionAssociations works fine for simple jobs producing collections - but you don't want to map a list over a tool that produces a pair and produce a bunch of pairs HDCAs and a list:pair HDCA- you just want a bunch of pieces and the one list:pair at that the top.  I think anyway... could totally be wrong.

Tests:

Includes two tools to test this - one that uses explicit pair output names and one that iterates over the structure of input list to produce an output list. The tool testing stuff does not yet work - but API tests that exercise these tools do work.
Prevent tools producing collections from being used in workflows.

Certainly feasible someday but workflow editor logic will require significant overhaul.