sessions:  Allow session ID's to be controlled externally.

Introduces editById as a main entrypoint (parallel to
"session" or "open"), which, given a notebook location and ID,
opens a new session to edit the notebook, or if there's already an
open session with that ID, re-uses the existing one.

This makes it so that a user can never have more than one session
open for the same notebook, which is what we want for Bunsen.
we for sure should use the url module and url.parse to do this work