Implement ShapePreservingBuilder. Fixes #207.

This allows us to use HAVING clauses – we can now modify a group after
some shape-preserving operation (EG, filter).

GroupBuilder also had to be modified to allow for containing _both_ a
map of fields and an in-progress field.

It also removes the fn parameter from merge, which means we now have to
[flat]map over the result.
Merge remote-tracking branch 'upstream/master' into ready/207-ShapePreservingBuilder
Respond to PR feedback.

* use “operator” names for These,
* improved WorkflowBuilder’s RenderTree, and
* added a few other RenderTree instances.
Merge pull request #489 from sellout/ready/207-ShapePreservingBuilder

Implement ShapePreservingBuilder. Fixes #207.