Add edge betweenness (first attempt)

TODO:
* Normalize
* Write unit tests for WR, WU, UD, UR and UU
* Make the edge betweenness calculation optional?
* Note:
    - SPT edges never use betweenness
    - Base graph edges never use dependency
Add missing edge betweenness unit tests

Known issue: A vertex cannot currently have multiple equal-weighted
edges from its predecessor to itself. This is because the predecessor
list is implemented as a Set, so that the multiple edges cannot be
recovered when the SPT is reconstructed.

We could potentially fix this problem by using a predecessor List rather
than a Set, but then how do we distinguish these multiple edges?

This also implies that we will need to change the implementation of
TraversalGraph from SimpleDirectedGraph to a directed graph that allows
multiple edges.