Refactor helper out for detailed encoding of a workflow for API.
Move building workflows from dictionaries into new WorkflowContentsManager.

Going to build up a WorkflowContentsManager that is reponsible for slightly more complex operations involving step logic, etc... and keep the WorkflowsManager focused on CRUD-like and sharing operations.
Refactor updating workflow contents out of mixin into manager.

Introduce an API endpoint for this operation with test case.
WIP: Updating workflow via the API + test case.
Move body of _workflow_to_dict to new WorkflowContentsManager.

Getting closer to killing UsesStoredWorkflowMixin.
Move more workflow logic out of controller into manager.

This logic for building up editor representation of the workflow.

Introduce concept of a workflow to dict style - with 'export' and 'editor' as first cracks.
Introduce yet another workflow to_dict style - 'instance'.

This is the style used by workflow 'show' - this consolidates all step handling to_dict style-logic from controller/base.py, controller/workflow.py, and api/workflows.py into the new WorkflowContentsManager - with API test cases for everything.
Fix for somewhere above.
Rework update stuff - this is better.
Allow implicit connections between workflow steps (no editor GUI yet).

This means steps that are not connecting an output of one step to the input of another. This could potentially address all sorts of untraditional (in a Galaxy sense) workflows where some sort of data is managed externally. The most important use I think I have heard discussed is that of data managers - this can be used in cases where data managers depend on one another (grab the fasta files in one step, index them in another) or workflows where a downstream analysis depends on index data populated via data managers in earlier steps.

Not really sure how to represent these in the workflow editor - but this is a power user feature anyway so hopefully that is not super pressing. The YAML to workflow DSL supports the operation (see test cases) so these power users (a euphemism for Dan I guess) can just use that for now.
Slightly improved error message for incorrect workflow connection uploads.