Emit events on workspace, buffer open.

Also modified WindowImpl init to avoid visiting the scratch buffer and then
immediately throwing it away and visiting the desired buffer.
Added support for auto-loaded services.

These services are resolved immediately upon editor startup. This allows them
to inject themselves into the buffer loading process before any buffers are
loaded into the editor.
HelpMode wants text mode styles, but not editing fns.
Revamped way buffers are killed, workspace lifecycle.