(Only for feedback) +str #15977 Rename and change types in the new DSL

There are still a lot of TODOs here (especcially documentation), but I would like som feedback on what has been done.

* Cleaned up type signatures
* Changed names of Source/Sink/ProcessorFlow to Faucet/Drain/Pipe
* Introduced new Source/Sink/Flow
So I wasn't sure what we wanted to do with the concrete Faucet/Drain types. I think that they need to be distinct from Source and Sink, but maybe they can implement Source and Sink.

At the lowest level in the graph and during materialization we need these small lego pieces, but they could probably be Sources and Sinks as well.