Adds Semantic Ranges capabilities to Clangd server.
Also adds tests for running it via clangd server.
This differs from the LSP spec as the spec needs this to be evaluated on multiple pos and the expected output is a list of list of semantic ranges.
This is majorly for multi cursor purpose and assuming this is a rare thing, we don't want to optimize and make things complicated just for this.
This should be done at the LSP level by queuing one request per pos in the input.