Condensed pull request 86, rebase out once merged with galaxy-central.
Refactor checking validation logic to abstract out the check to determine if a dataset matches an input (will help when reworking modifing this logic for composite multiple file datasets for instance).
Refactor special handling of upload1 in tools.py to allow other upload tools.
Implement abstraction in Job model class for storing parameters related to how the job is run. See comments for additional details.
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.
Modified merge to regenerate primary file after so that links show up.
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.
In CompositeMultifile, disable checking file types by default, subclasses can still enable this by initiailizing super class with check_file_types=True.
Implement framework for "implicit" datatype loaders and create one to create an implicit composite multi-file datatype for each concrete datatype. This provides all of the advantages of Jorrit Boekel's Adapt (https://bitbucket.org/glormph/adapt) galaxy extensions without requiring explicit definition of special datatypes.

However, 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.
Implemented  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  (False by default) to enable multiple file 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.
Handle multi_upload1 as a special case in during workflow extraction, just the way upload1 is.