Clean up (un)weighted NodeBetweennessInfo classes.

Before, we had a notion of steps (int) and distance (double). With this
refactor, we only have the notion of distance, and the int/double
question is resolved by inheritance and generics (coming in the next
commit).
Use generics in graph analyzers.

It makes a lot more sense for WeightedGraphAnalyzers and Dijkstras to
only be able to use WeightedNodeBetweennessInfo (and similarly in the
unweighted case).

I also move the nodeSet() function up to a GeneralizedGraphAnalyzer
which I will extend later by other analyzer type functions.

Dijkstra now extends a GraphSearchAlgorithm.
Remove verbose versions of Dijkstra / analyzers.
Impliment init() in superclass.

Before, we initialized the node betweenness map in the subclasses of
GraphAnalyzer. Now, using generics and recovering a constructor for the
type parameter T (<T extends NodeBetweennessInfo>), we can do this in
GraphAnalyzer.
Update tests to reflect recent changes.
Add BFS algorithm.
Refactor into BFSForCentrality.

This is analogous to the WeightedGraphAnalyzer using
DijkstraForCentrality.
Refactor PathLengthData to (un)weighted PLD.

This change is in the spirit of the previous refactor of
NodeBetweennessInfo and removes the confusion about "steps" versus
"lengths".
Refactor NBI to make life easier.
Simplify constructors.
Move printSPInfo() methods up to superclass.
Print extreme values.
Merge pull request #4 from agouge/refactor/generics-and-node-info

Major refactor.

In this PR we refactor several things:
* Move everything possible up to the root `GraphAnalyzer` class.
    - This includes `init()` and `printSPInfo(startNode)`.
    - We had to use generics and a little constructor magic to be able to properly initialize the node info hash map.
* Add a BFS algorithm and refactor `UnweightedGraphAnalyzer` into a `BFSForCentrality` class. This is more logical considering how `WeightedGraphAnalyzer` is organized.
* These changes required a refactor of `NodeBetweennessInfo` and `PathLengthData` into their (un)weighted versions so that we could use either ints or doubles for distances. This removes a lot of confusion about the difference between distances and steps.