+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 think the original point was that it wasn't clear which part was API and which only implementation detail. From there on, the changes went off the track one step after the other, starting with me requesting the strange `abstract case class` pattern. Sorry for this.