Rework the cache key construction to consider all the arguments used when invoking the query driver.
https://github.com/clangd/clangd/issues/1403
This also reworks handling for -isysroot
https://github.com/clangd/clangd/issues/1404
And adds support for passing through -specs flags to the query driver
https://github.com/clangd/clangd/issues/1410
can we introduce a struct instead?
we can also implement hashing based on the struct now and also pass it around.