Generalize Pipelines to Workflows.

I’ve tried to make this PR as small as possible – containing only the changes necessary for the Workflow conversion. It’s still pretty big.
Yeah – I actually want to replace all the constant names (including `lEft`, `rIght`, and `expr`) with names generated via `BsonField.genUniqName`, which should also help us prevent bugs where the wrong binding could be referenced. I’ve made a note to do this, but haven’t yet.