Repository index

Previously, all components that used the standard repository format
would be required to load and managed the index separately.  This
change adds a reusable type (Util::RepositoryIndex) that all
components can use and which abstracts the relative location of the
index, how the content is cached, etc.  The type behaves as a Hash, so
is usable simply and directly after instantiation.

[#51641207]
Merge 51641207-repository-indexing to master

[Completes #51641207]