Improve handling of collection names in generated JS

1. Generate correct mongo shell syntax for collections with names that aren't valid dot-separated JS identifiers.
2. Change generated names for temporary collections so that they are valid dot-separated JS identifiers, and to put them all under a `tmp` pseudo-namespace (so that they appear in the API as sharing a `tmp/` sub-directory.

This is another extract from my WIP branch for #140.
It's bogus. You'd obviously like to write the actual collection name that this workflow is going to be writing into. But that collection is identified by the `Path` that is given to the `evaluate` method as a second parameter alongside the workflow, so it's not actually captured by the workflow. The caller of this method is the `showNative` function, which receives only the Workflow, as the `Backend` trait is currently constructed. See https://github.com/slamdata/slamengine/blob/master/src/main/scala/slamdata/engine/backends.scala#L20.

A simple fix would be to the `out` path as a second parameter to that function. Unless you can suggest something more elegant. This still feels a bit ad hoc to me.