Resolve unknown providers to an orphan provider if not otherwise found

Right now, if a provider can't be found, we create a new provider. This modifies the `find_or_create_provider` process by allowing the app to resolve to a provider later in the process, and by default, a provider that can't be found resolves to a single orphan provider, instead of creating many orphans.