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.