Notebook text editor

This is a work in progress, but basic loading, editing and saving appears to be working.

This sits on top of #6865, because `CodeMirror.findModeByMIME` is apparently new in 4.7.