=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.
I think that graphs with more than MAX_INT number of edges will have other issues, so I think that one label counter per builder.