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
Yeah, we actually don’t want to restrict that there. The code I’m working on inserts `ReduceOp`s where necessary to get FoldLeftOp to behave, so it’s all patched up properly in the conversion from Op to Task.