o Index interfaces to support using different index sources (e.g. AST index, global index) for code completion, cross-reference finding etc. This patch focuses on code completion.
The following changes in the original patch has been split out.
o Implement an AST-based index.
o Add an option to replace sema code completion for qualified-id with index-based completion.
o Implement an initial naive code completion index which matches symbols that have the query string as substring.
Maybe pass a parameter of type SymbolIndex& instead of a vector, which is used to create CombinedSymbolIndex later?
It seems that ClangdServer does not really care about the specific index implementation that's used (nor should it!)
We could have helper methods to conveniently create CombinedSymbolIndex from a list of indexes, or even create the default index for clangd.