+str #15904 Ported Tcp IO to new Stream DSL

* Port of Tcp IO to the new Stream DSL
* ~~Ordered shutdown of the server is to be discussed (was missing in the old one as well)~~
* ~~This PR also includes the broadcast fixes for #15948 which can be ignored (will be removed)~~

Fixes #15904
I'm not sure I get it. Why not make this an ordinary case class and use a second parameter list with `val connection: MaterializedMap` and `closeable: Option[Closeable]` ?