LS: smart indentation

Implementation of smart indentation that uses new syntax trees
This covers `SyntaxKind.Unknown` - is that desired?

Weird that we don't have a `FirstToken` and `LastToken` constant. Maybe we should while introducing it through a `SyntaxConstants` or `SyntaxKindMarker` enum as we've previously discussed.