LSP: Support textDocument/SemanticTokens/range request
SemanticTokens/range allows us to request tokens for a given range. For us, this means "Current View Lines". This greatly reduces the load on both us and the server as now we aren't processing tokens for full document which can easily mean thousand of ranges per typed character. Unfortunately, clangd currently doesn't support this however rust-analyzer and dart do support it.