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).
Yeah, it would be, at least in this particular case, but I think at the point of the changes I made (`Workflow.merge`), we can’t make that assumption. I think improving handling of flattening in WorkflowBuilder would be the place to take care of that.