Language Server Protocol support for Shuck.
The primary entrypoint is [run], which starts the server over standard
input and output. A small set of document/session types is also exposed for
integration tests and embedding scenarios that need an in-memory LSP server.