Don't actually start building ASTs for new revisions until either:
- 500ms have passed since the last revision, or
- we actually need the revision for something (or to unblock the queue)
In practice, this avoids the "first keystroke results in diagnostics" problem.
This is kind of awkward to test, and the test is pretty bad.
It can be observed nicely by capturing a trace, though.
As discussed offline, we want to expose the debounce parameter in ClangdServer, as there are existing clients of the code that already send updates with low frequency and it would be wasteful for them to do any extra waits.