[SourceKit] Ensure `ASTCache` is guarded by mutex
There were a couple of accesses not guarded by
`CacheMtx`, introduce a couple of methods that
guard them, renaming `getASTProducer` while here.
Also make sure we don't ever insert a producer
after it has been purposefully removed by e.g a
close that removes the cached AST.