SingleSourceOp
coalesce all ops when they're constructed

- eliminate the public coalesce methods
- introduce `make` methods on each companion obj, with the most precise
type
clean up unneeded reparenting
simplify read, pure, match, and project
convert the rest of the WorkflowOps

- use chain() everywhere
fix syntax in comment
Merge pull request #355 from mossprescott/ready/coalesce-workflowops

Coalesce WorflowOps when they're constructed
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
require at least two source ops for FoldLeftOp
Merge pull request #357 from mossprescott/ready/workflow-op-render-chains-2

More WorkflowOp debugging improvements
flatten rendering of Project/Grouped/By
Merge pull request #358 from mossprescott/minor

flatten rendering of Project/Grouped/By