Implement addEdge steps

@mhfrantz 

In addition to implement the four steps addE, addInE, addOutE, addBothE this PR includes some other only loosely related changes:

1) Change iterator() back to being an async method (returning a promise or calling a callback).
2) Refactor various methods that take a varargs Object... keyValues to use a common helper function Gremlin. propertiesToVarArgs.
3) adds unit tests for traversal.next, traversal.iterate.

[Delivers #83357838]