+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
is there a reason to use `object` here instead of `val sink = new SimpleDrain...` ?