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

Introduces /edit/:notebookId 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.