This commit splits the 'projects' cache into two pieces:
1) The 'projects' cache: This cache continues to work as
it did before. It offers a by-name caching without the
need to present or load the ObjectId of
refs/meta/config.
2) The 'persisted_projects' cache: This cache is the
persisted variant of 'projects'. It's used in the loader
for 'projects' and - as all persisted caches - has the
ObjectId in the key.
This new setup allows admins to persist the project cache -
if desired - to ease cold start times. This is an additional
performance improvement next to ProjectCacheWarmer. It might
at some point replace ProjectCacheWarmer. For now, the two
co-exist.
The split is done in this way to make sure we can still
access projects in the cache without loading a SHA1 for each
lookup as that would be prohibitively slow given the amount
of requests this cache serves.
Change-Id: I174076acd90ae815ac66e1e0f8a72db0701bf2d3