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.
Should be `NonTerminal("", ops.map(...), "ShapePreservingBuilder" :: "Ops" :: Nil)`. If we don't have an instance that can deal with `ShapePreservingF[Unit]`, then `Terminal(op.toString, "ShapePreservingBuilder" :: "Op" :: Nil)` will do I guess.