SI-8575 Prevent AbstractMethodError caused by type alias

For some reason, erasure will not create the bridge method for consume in the
situation below.

  type F = A with B
  type X = E[F with C]
  def consume(x: X): Unit

When the method consume is defined in a subclass but called in the super class
(using the generated bridge) an AbstractMethodError is triggered.

This appears to be only the case if X is aliased to an applied type constructor
with the argument being a compound type as above.

Since manually deliasing F to A with B does work, the solution appears to be to
dealias components of compound types. However, dealiasing must not be performed
on AnyRef, which would result in Object and thus break tests.

This might change the binary interface of the generated code to a theoretically
equivalent one. But who knows whether this is equivalent enough.