Would be great to pass in the WheelBuilder into the library resolve function directly, maybe in combination with specific ResolveOptions.
This would allow the user of the library to re-use the WheelBuilder, because a seperate instance of the struct lives in the DependencyProvider and in user code when building wheels. This currently dis-allows the sharing of build_environments between metadata and wheel building code, as well as limits the querying of the failed build environments.
Would be great to remove the lifetimes as well because they complicate the code a lot and do not really benefit us much.