Refactor logic related to creating tools for unit tests.

So it can be reused by tool actions unit test.
Create unit test for some simple DefaultToolAction functionality.

Want to refactor some stuff around in DefaultToolAction so can be reused when dealing with dataset collections downstream in https://github.com/jmchilton/galaxy-central/tree/collections_1 - so creating unit tests to ensure functionality is not changing.

This changeset also reworks test_execution.py moving more stuff to test/unit/tools_support.py to share between test files.
Add get_output_name to DefaultToolAction.

Slightly simplfies default execute but more importantly will allow reuse of logic when naming dataset collections.
Allow running tools on multiple datasets simulatenously (backend+API).

Each data tool parameter can be specified via a similar named parameter but with the suffix |__multirun__. This second parameter variant should be a list of datasets - one job will be created for each such dataset.
Refactor stateful parameter wrapping logic out of DefaultToolAction...

... into new galaxy.tools.parameters.wrapped module.
Allow running tools on multiple datasets simulatenously (UI).

Update tool form. This commit needs work to ensure this only affects the tool_form.mako.
Add tool meta parameter exception.
Parallel tool execution across dataset collections (backend).
Parallel tool execution across dataset collections (UI).
WIP: Build dataset collections from dataset collection runs.