Pull out WorkflowOp merging as a separate operator

This gives us another option for testing workflow construction, which should be helpful as things continue to get more complicated.
Should these be moved to `WorkflowOp`? Having `WorkflowOp` depend on `WorkflowBuilder` seems backward to  me – especially with an eye toward WorkflowOp being the public API of an eventual Mongo library.