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).
It would be better to project out just `loc` and then unwind that, no? Actually, in this case, I think we could avoid doing any $project after the $unwind. But this is probably an issue for another day, because we often make copies of $$ROOT when we don't need to.