ConfigEntityStorage depends on both the config factory and the config storage this makes it unnecessarily complicated to use it to load configuration from a different storage.
Remove config storage dependency since the only reason it has that is to listAll(). ConfigFactory::listAll() exists already and delegates listing to it's storage. That means all we need to do is swap the storage on the config factory and use that factory with ConfigEntityStorage in order to load configuration from a different storage.
User interface changes
ConfigEntityStorage and classes that extend it no longer have a direct dependency on config storage.