Some small changes along the way to mongo joins.

Wanted to push some things before I ended up with merge conflicts.

The only non-trivial change is “Request collection names.”
This looks wrong to me. The distinction between `Tmp` and `User` is that `Tmp` collections can be deleted / garbage collected, while `User` collections are sacred and cannot be modified in any way.

I suppose the other type of collection not modeled in the code is a `Req` / `Target` collection, that is, the collection where the user wants the results to be stored. You've modeled it as `Tmp` here but the distinction between a SlamData-generated temp collection and a user-requested output collection may be worth preserving (I'm not sure).

In any case, ideally we have the desirable property that either the destination collection is created, and contains the full results of the successful query, or it's not created because of an error or because it's identically equal to some user collection. This was the logic behind the renaming stuff -- rename is atomic so if you rename from a temp collection to the request collection after the query's been executed, you have the property that the request collection is only ever created in the event of a successful query. While Tmp collections are created randomly throughout the process and generally contain junk which can be cleaned up as necessary.

I believe the way you've written this, it's possible for the request collection to be created and accumulate some results, but for an error to interfere with production of full results. I'm not sure how I feel about that. What are your thoughts?