Add support for concepts and requires expression in the clang index.
Genarate USRs for concepts.
Also how RecursiveASTVisitor handles return type requirement in
requires expressions. The new code unpacks the synthetic template parameter
list used for storing the actual expression. This simplifies
implementation of the indexing. No code seems to depend on the original
traversal anyway and the synthesized template parameter list is easily
accessible from inside the requires expression if needed.
Add tests in the clangd codebase.
maybe also a constrained auto usage?