course-grained pullout of api into web subproject
Merge pull request #509 from jdegoes/ready/481

course-grained pullout of api into web subproject
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).
Merge remote-tracking branch 'upstream/master' into ready/407-merge-array-flattens
A few improvements to scripts.

* allow `build` to work even when `$LOCAL_MONGODB` isn’t set,
* always run `ready` from the top-level of the repo, and
* don’t fail `ready` if `terminal-notifier` has a non-zero exit.
capture errors in query/dir separately
minor cleanup
Merge pull request #512 from sellout/ready/script-fixes

A few improvements to scripts.
Remove obsolete backend name.
wait 400ms before validating input; use drop-down for contextPath
hide/show "active mount" combobox as needed
Add integration test to show that this PR fixes #472.
cleanup temp collections
modal progress dialog for saving/copying results
tweaks
Merge pull request #511 from sellout/ready/407-merge-array-flattens

Some fixes along the way to unifying flatten operations.
replace logo; move some code to swing.scala; cleanup
Merge remote-tracking branch 'upstream/master' into wip/479
revert