Avoid storing duplicated "std::string"s.
Previsouly, clangd's global-symbol-builder consumes 20+GB memory when running across LLVM repository.
With this patch, the used memory is reduced to ~10GB (running on 48 threads, most of memory are AST-related).
please add a high-level comment explaining what this is caching and when we expect it to work well.