=str #15844 Use key labeled edges to support multiple edges between same vertices

@rkuhn @drewhk The whole purpose of [key-labeled](http://www.scala-graph.org/guides/core-initializing.html) edges is this, of course. Sorry that I didn't realize immediately.

When using `LkDiEdge` the edge label (equals/hashCode) will part of the edge identity.
but that can of course be solved with an initial `graph.edges.size`, alright a counter is the simplest thing that could possibly work. I'll change to that.