Add missing `merge` cases.

This adds an explicit case for ReadOp↔︎MapOp and then a general
case (using `FoldLeftOp`) for other unhandled cases. Fixes #329.

This incidentally also

* replaces many cases of `foo.apply` in JS with `foo.call`,
* fixes some broken cases of MapOp/FlatMapOp `coalesce`,
* improves `FoldLeftOp.coalesce`, and
* removes the disjunction from `WorkflowBuilder.build`.