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