search: do not rely on Stats.Repos for names in streaming
Created by: keegancsmith
Since the introduction of repo pagination Stats.Repos is a subset of the universe of repositories. In particular we may not have entries for repositories that timed out, etc. So we instead introduce the concept of a "RepoNamer" which the progress event builder can use to translate repository IDs into names. The implementation of this is a DB lookup with a cache. We introduce a cache since progress events are regularly sent out.
Note: while implementing this there are some improvements to the progress internal API which can be done. I will save these for follow-up PRs. This will include potentially removing how reponamer is smuggled in.
Part of https://github.com/sourcegraph/sourcegraph/issues/27421