Some fixes along the way to unifying flatten operations.

* fix $unwind merging so it doesn’t trample the not-unwound version on
  the other side of the merge (fixes #494),
* change some other merging to the “common source” style @mprescot and I
  had discussed before,
* remove an “auto-join” style merge case (and a workflow test for it),
* fix rendering of ShapePreservingBuilder,
* use `unlessConflicts` to make objectConcat more consistent and less
  likely to generate nested documents,
* avoid unnecessary duplication of fields when concating/merging two
  groups (fixes #474), and
* parameterize freshId on the label (need to extend this to freshName at
  some point).
These tests cleaned up nicely, but I'm just curious why the temp names went up.