!str #15971 get rid of extra type parameters of RunnableFlow, FlowWithSink, and FlowWithSource

This is an concrete proposal for improving the situation Mathias started to discuss in #15971.

Here all the extra type parameters are removed at the expense of also removing the `withoutX` methods which aren't particularly useful compared to the cognitive cost they add.

This also fixes #15973. It could also make sense to hide all the parameters of the case classes as well. This isn't strictly necessary for correctness but would e.g. prevent people using the plain AstNodes as API.

I had to add one remaining suspect instance of `@uncheckedVariance`, not sure if this is the compiler being too strict or if there's really an unsoundness here.

/cc @sirthias 

... and there goes Martin needing to redesign dotc ;) https://issues.scala-lang.org/browse/SI-7093