Added some new ClangTidyOptionsProvider like classes designed for clangd work flow.
These providers are designed to source the options on the worker thread but in a thread safe manner.
This is done through making the options getter take a pointer to the filesystem used by the worker thread which natuarally is from a ThreadsafeFS.
Internal caching in the providers is also guarded.
The providers don't inherit from ClangTidyOptionsProvider instead they share a base class which is able to create a provider for the ClangTidyContext using a specific FileSystem.
This approach means one provider can be used for multiple contexts even though ClangTidyContext owns its provider.
Depends on D90531
new comment doesn't really say anything, revert to the old one?