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.
Fix edge betweenness / add some tests

Tests left to add:
* UR
* UU
Normalize / finish unit tests

This also fixes the known issue in 28b15cbfda3e572a3402429891e1e208fa536f5b
by keeping track of predecessor edges as well as predecessor vertices. I
will need to benchmark this to make sure it doesn't slow down graph
analysis too much. If it does, I could make calculating edge betweenness
optional and/or find a more efficient implementation. At least at this
point, I am confident that the results are correct.
Merge pull request #39 from agouge/33

Implement edge betweenness [#33].

This implementation allows for multiple shortest paths. I have
included unit tests for (un)directed (un)weighted (and possibly
edge-reversed) networks. The values are normalized.