Extract all the workflow run API param handling out...

This should allow for the reuse of all of this in asynchronous workflow running and make unit testing of all the different paths easier (though that is not included in this commit - the API functional test coverage for this code is pretty decent at this point).
Move galaxy.dataset_collections.util to galaxy.managers.collections_util to prevent circular dependency error.

Still some problems with histories and hda managers when loading from unit tests:

======================================================================
ERROR: Failure: ImportError (cannot import name histories)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/john/workspace/lwr/.venv/local/lib/python2.7/site-packages/nose/loader.py", line 414, in loadTestsFromName
    addr.filename, addr.module)
  File "/home/john/workspace/lwr/.venv/local/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/home/john/workspace/lwr/.venv/local/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/john/workspace/galaxy-central/test/unit/workflows/test_workflow_run_request.py", line 4, in <module>
    from galaxy.workflow import run_request
  File "/home/john/workspace/galaxy-central/lib/galaxy/workflow/run_request.py", line 4, in <module>
    import galaxy.managers.histories
  File "/home/john/workspace/galaxy-central/lib/galaxy/managers/histories.py", line 12, in <module>
    import galaxy.managers.hdas
  File "/home/john/workspace/galaxy-central/lib/galaxy/managers/hdas.py", line 11, in <module>
    from galaxy.managers import histories as history_manager
ImportError: cannot import name histories
Hack to get around circular dependency by histories and hdas manager modules.

    ======================================================================
    ERROR: Failure: ImportError (cannot import name histories)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/john/workspace/lwr/.venv/local/lib/python2.7/site-packages/nose/loader.py", line 414, in loadTestsFromName
        addr.filename, addr.module)
      File "/home/john/workspace/lwr/.venv/local/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
        return self.importFromDir(dir_path, fqname)
      File "/home/john/workspace/lwr/.venv/local/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
        mod = load_module(part_fqname, fh, filename, desc)
      File "/home/john/workspace/galaxy-central/test/unit/workflows/test_workflow_run_request.py", line 4, in <module>
        from galaxy.workflow import run_request
      File "/home/john/workspace/galaxy-central/lib/galaxy/workflow/run_request.py", line 4, in <module>
        import galaxy.managers.histories
      File "/home/john/workspace/galaxy-central/lib/galaxy/managers/histories.py", line 12, in <module>
        import galaxy.managers.hdas
      File "/home/john/workspace/galaxy-central/lib/galaxy/managers/hdas.py", line 11, in <module>
        from galaxy.managers import histories as history_manager
    ImportError: cannot import name histories
Add WorkflowRequest and associated infrastructure to data model.

This is a stripped down version of data model changes made by Kyle Ellrott for work on Galaxy Farm https://bitbucket.org/kellrott/galaxy-farm/branch/workflow_migrate.