(#6907) Prefetch unsuitable providers
Previously, if we chose to use an unsuitable provider, we would not
prefetch it because it wasn't suitable at the beginning of the run. Now,
we lazily prefetch, waiting until the first resource of a particular provider is evaluated.
If the provider we are prefetching is also the default provider for its type,
we also find resources of that type with no specified provider, and assign them
the default provider. This allows us to avoid prefetching the same provider
twice (once for resources explicitly using it, and once for resources
implicitly using it because it's the default).