- Adds updateAnotherVertexUsingSelf and updateSelfUsingAnotherVertex and their
  tests. These primitives work as follows: vertices store a pointer to one other
  vertex, not necessarily their neighbors and either update themselves using the
  pointed vertex or vice-versa. Appears in matching algorithms as well as algorithms
  that contain a pointer jumping phase, such as Boruvka's minimum spanning tree
  algorithm, METIS, or multi-level clustering algorithms.
- Fixes a typo in the comments of GraphOps.scala: udpate => update
- Adds @return to some of the primitives that were missing it in its comments