Use a read-only text store for scratch buffers.
Added Buffer.editable.

This presently only affects whether we track undo state. Buffers that are not
intended to be edited interactively to use a ReadingMode-only major mode rather
than an EditingMode major mode. The former simply does not bind commands which
modify the buffer.

Nevertheless we may wish to enforce non-editability elsewhere (DispatcherImpl?)
in the future.
Don't abort resolve on error; expose resolve(SystemId).