Leave process_dataset immediately if input data is `None` in collect_input_datasets of DefaultToolAction, simplifies code and eliminates some unneeded computation.
Refactor special handling of upload1 in tools.py to allow other upload tools.
Code taken from Jorrit Boekel's adapt project (https://bitbucket.org/glormph/adapt) implementing multi-file homogeneous composite datatypes and task parallelism.
Faster splitting and merging with symlinks/renaming
Keep multifiles in alphabet order instead of timestamp order when uploading
Modify CompositeMultifile merge order for galaxy-central pull request 83.
Fix bug related to data library uploads introduced with multiple file dataset code.
Improve dataset info message for multiple file dataset upload.
For multifile dataset upload, get name as input with upload so dataset is not just named after first file.
Implement concept of implicit datatypes to create an implicit composite multi-file datatype for each concrete datatype. This provides all of the advantages of Jorrit Boekel's Adapt galaxy extensions without requiring explicit definition of special datatypes (though if a multifile version of datatype X exists an implicit multi-file datatype for X will not be created, so none of the flexibility/customiziation allowed by Adapt is lost.)
Made a modification that checks if it is a CompositeMultifile instead of checking composite_type, this is a little more percise a check I think. Modified merge to regenerate primary file after so that links show up. Disable checking file types by default, subclasses can still enable this by initiailizing super class with check_file_types=True.
Initial work on `implicit` parallelism of composite multifile types. For any input type x, allow input type m:x as well, if such a input is chosen modify outputs so they are multifile and attach parallelism info to the job object, finally modify job handler to check the job object (in addition to the tool) for parallelism instructions.
Override CompositeMultifile.matches_any, so tools with parameters of type <input type="data" format="data" ... assume that multiple file datasets don't directly match so that if they are selected by the user, thus they will split up and individual files will be processed as tasks. This is going to be the desired behavior in 99% of the cases. If it is desirable for a tool to take in either a format="data" or format="m:data" and process them the same way, format="data,m:data" should work.

Correct behavior related to format of output extensions when format is selected from an an input that has been selected as a multifile.
Add universe_wsgi.ini option `use_composite_multifiles` (False by default) to enable composite multifiles.
Do not split up a multiple input data parameter if input is a composite multifile.
Enable conditional loading of toolbox elements. tool, label, section, and workflow elements can have an `if` attribute that will be interpreted as a python expression and `eval`-ed with app in the environment. When such an attribute is found, the resulting toolbox element is loaded only if the expression evaluates to a `true` python value.
Load "Multiple File Datasets" tool section only if use_composite_multifiles is enabled in universe_wsgi.ini.
Handle multi_upload1 as a special case in during workflow extraction, just the way upload1 is.
Rework peak and primary HTML for composite multifiles, these are a little more user friendly.
Preserve basenames of composite datatypes when possible.