Condensed pull request 85. Rebase out once it has been merged with galaxy-central.
Condensed pull request 83. Rebase out once it has been accepted into galaxy-central.
Condensed pull request 86. Rebase out once it has been accepted into galaxy-central.
Condensed pull request 87. Rebase out once it has been accepted into galaxy-central.
Code taken from Jorrit Boekel's adapt project (https://bitbucket.org/glormph/adapt) implementing multi-file homogeneous composite datatypes and task parallelism.
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.)
Faster splitting and merging with symlinks/renaming
Keep multifiles in alphabet order instead of timestamp order when uploading
Fix data library uploads.
Improve dataset message for multifile dataset upload.
For multifile dataset upload, get name as input with upload so dataset is not just named after first file.
Fix CompositeMultifile merge order for galaxy-central pull request 83. 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.
Leave process_dataset immediately if input data is `None` in collect_input_datasets of DefaultToolAction, simplifies code and eliminates some unneeded computation.
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.
Add tool to break up multiple file dataset into individual datasets.
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.
Refactor special handling of upload1 in tools.py to allow other upload tools.