implement API for queries via GET (Fixes #350)

Make output path optional when executing queries. If not specified,
the evaluator simply leaves a result temporary collection in place.

Added a TODO on cleaning up these temporary collections.
A simple solution would be wrapping `Path` in a 2-case ADT with cases for `TempPath` and `UserPath`. However, it's worth pointing out that if the user requests the final collection to have a certain name (i.e. the non-GET API), then they probably want to persist it, so it should not be cleaned up (although at some point we'll want to track the metadata that we created it). If the user didn't request a name, then in the GET API, we clean up as soon as the HTTP connection is terminated (or, in the REPL, as soon as the result sample has been streamed).