+str #15977 add SourceFlow/SinkFlow

- sources must really be sources (the same for sinks), hence
  ProcessorFlow cannot implement either of these
- therefore they are just other names for FlowWithSource/Sink
- also fixed type-safety of FlowGraph’s edge labels
hmm, yes, this was what I wanted to discuss: FlowMaterializer will need to access these, so alternative implementations will be restricted to use our package name; I’m leaning towards opening things up in a sensible fashion (whatever that ends up meaning)