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` and
* fixes some broken cases of MapOp/FlatMapOp `coalesce`.
[minor] Remove an unnecessary disjunction.