Introduction of storages provider to get up to date storages
It is a next step in including cached storages provider in order to support reads distribution across gitalies. On each invocation it queries the passed in dependency and combine the result with existing primary. The resulted list is used by the manager to decide where request should be routed for processing. In a follow up MR it will be extended with expiration cache to reduce load on database as accessing it on each read operation is not efficient.
Part of: #3053 (closed)