Add some code to do platform-independent path processing.
This is necessary aas WASM does e.g. not have any absolute paths and
such and the compiler tended to produce wrong results in that case.
Side-effect: We no longer need to depend on `dunce`
Somehow the vscode extension started to send an empty string for the showPreview
command instead of nothing. Resulting in the showPreview command from the command
palette not working anymore.
Fix#3412
This makes sure paths match up with each other. Highlighting broke for
me since the paths in the DocumentCache were canonicalized while the path
the LSP wanted the preview to highlight was not.
No behavior should change in this patch!
Move all the code directly related to the LSP into a `language` module,
with `server_loop.rs` becoming `language.rs`, managing that module.
All the preview related code is moved into `preview`, with `preview.rs`
basically forwarding to `native.rs` and `wasm.rs`.
Code accessed from both `language` and `preview` stayed where it was.