Implement OpaqueClosure return type narrowing (#39917)
Allows the optimizer to rewrite the return type parameter
of the OpaqueClosure based on inference results of the
partially specialized (i.e. specialized on the closure
environment, but not on the argument types of the opaque
closure). This helps by forcing an inference barrier to
occur if the PartialOpaque-ness information gets lost,
causing a re-infer with at least the rt information we
have from inference.