More WorkflowOp debugging improvements

- RenderTree.diff now reflects node type changes
- RenderTree.diff output more readable
- properly indent for multi-line labels (i.e. JavaScript)
- render SingleSourceOps as a flat list under a "Chain" node
- less amiguous labels for projections
- foldLeftOp takes varargs instead of a NEL
- a little more coverage
Rather than changing the type of `tail`, I'd suggest more simply: `(x1: WorkflowOp, x2: WorkflowOp, xs: WorkflowOp*)`.