Use WorkflowOp (instead of -Task) for the PhysicalPlan.

This gets us one step closer to isolating MongoDB-specifics from the
rest of the system.

It has the nice benefit of cleaning up many tests and making them a bit
more resistant to changes in `physical.mongodb`. Also, one evaluator
test (expecting failure) is now impossible to hit, since we can’t get a
badly-formed `FoldLeftOp` to the evaluator.

Fixes #366.

Also:
* add some `WorkflowOp.merge` tests;
* test `WorkflowOp.finalize` & smart constructors to make up for these
  losing coverage in the planner tests; and
* eliminate dead code from PipelineOp, since much of its work has been
  moved to WorkflowOp.