Handling of higher-kinded types in intersections and unions.
Handling of higher-kinded types in intersections and unions.

If we intersect a higher-kinded type C with an instance C[T],
we should expect C[T].

Conversely, taking the union of a higher-kinded type C and an
instance C[T] should give C.

Previously, the higher-kinded place-holder $hkN was merged with
&/| with the type T which led to type errors.

VladimirNik/dotty,yusuke2255/dotty,yusuke2255/dotty,lampepfl/dotty,reactormonk/dotty,spetz911/dotty,folone/dotty,dotty-staging/dotty,sjrd/dotty,lampepfl/dotty,VladimirNik/dotty,dotty-staging/dotty,folone/dotty,dotty-staging/dotty,angi2/dotty,auvik/dotty,sjrd/dotty,vsalvis/dotty,angi2/dotty,spetz911/dotty,som-snytt/dotty,som-snytt/dotty,sjrd/dotty,densh/dotty,sjrd/dotty,som-snytt/dotty,som-snytt/dotty,auvik/dotty,densh/dotty,vsalvis/dotty,lampepfl/dotty,reactormonk/dotty,svalaskevicius/dotty,lampepfl/dotty,dotty-staging/dotty,som-snytt/dotty,AlexSikia/dotty,svalaskevicius/dotty,sjrd/dotty,dotty-staging/dotty,AlexSikia/dotty,lampepfl/dotty