Add SPT for Dijkstra D/R + unit tests
Add SPT for Dijkstra U + unit tests.

WARNING: shortestPathTree.addEdge(u, v, e) was modifying the base graph!
Make Dijkstra SPTs optional (performance)
Fix BFS predecessor logic [See #34]
Add SPTs for BFS/"SPT"s for DFS

ToDo:
* Make it clear that these are not really SPTs for DFS
* Make it clear that these "SPT"s may contain multiple SPs
* Add unit tests for BFS/DFS SPTs
Remove confusion about SPTs

* Make it clear that these are not really SPTs for DFS
* Make it clear that these "SPT"s may contain multiple SPs
Use getVertex rather than vertices[]
Simplify DFS tests
Add unit tests for DFS traversal graphs
Simplify DFS tests
Remove unnecessary 'e' param
Extract SPT construction (simplifies usage)

Potentially improves perf as well
Add unit tests for BFS SPTs
Merge pull request #37 from agouge/36

Reconstruct shortest path "trees" (BFS/Dijkstra) and traversal graphs (DFS)

Everything we needed for #36 was already there (namely the predecessors), we just had to put things in the right place.

We introduce a TraversalGraph<V, E> class, which is just a JGraphT SimpleDirectedGraph with a root vertex. We use this to model shortest path "trees" (SPTs) for BFS/Dijkstra (we allow multiple shortest paths if they exist) and traversal graphs for DFS.

The SPT is reconstructed iff the user calls GraphSearchAlgorithm#reconstructTraversalGraph(). The root of the SPT is the last vertex GraphSearchAlgorithm#calculate was called on.