Drop lazy recursive application in approximateParent (#16073)
Drop lazy recursive application in approximateParent (#16073)

This plays badly with any code that inspects bounds deeply when creating
constraints
since the LazyRefs create new type variables at unexpected times.
Instead, create
the type variables first with empty bounds of the right kind and then
add
the bounds to the constraint using subtype tests.
sjrd/dotty,lampepfl/dotty,lampepfl/dotty,sjrd/dotty,sjrd/dotty,dotty-staging/dotty,lampepfl/dotty,lampepfl/dotty,dotty-staging/dotty,sjrd/dotty,sjrd/dotty,dotty-staging/dotty,dotty-staging/dotty,dotty-staging/dotty,lampepfl/dotty