(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.

* Clean up type signatures
* Chang names of Source/Sink/ProcessorFlow to Faucet/Drain/Pipe
* Introduce new Source/Sink/Flow
* Make all Pipe types package private
* Change the TypeGraph DSL to work on Flow/Sink/Source
That sounds nice. I have one issue with it though, that the SourcePipe/Pipe//SinkPipe uses append/prepend to implement the mirror, when it is a Source/Flow/Sink that they don't know about. There is of course nothing that prevents us from having that functionality on the Concrete Source/Flow/Sink implementations.