+str #15946 Support flows without junctions in FlowGraph

* run simple flow with source/sink without any junctions in FlowGraph
* partial flow graph with undefined source/sink and flows, without junctions
* replace undefined source/sink with flow with source/sink
minor:
* DRY these out a little bit (maybe `lookup(token)`, which would handle validation/throw exceptions)?
* I'd be tempted to have all these as overloaded `def attach(token, what)` methods, may be easier for users not having to care if attaching a `FlowWithSource` or `Source`