using tb interface for easy benchmarking

I added benchmark functions to a few of the graph algorithms.
Currently, use --focus to focus on specific parts of the test.
I am in the process of changing the tests to not repeatedly
rebuild a graph
bugfix in topological sort

First, topological sort should return nil for an undirected graph.
Second, I need to set the state for all nodes to unseen *before* running
the algorithm. This prevents topological sort from returning an empty
node list if ran twice in a row
better benchmarks for topological sort & SCC

Adding a topologicalSort / scc directed/undirected setup function
for the graph allows me to change the benchmarks to only test the functions
they are meant to test (as opposed to rebuilding a graph for every test).
Also, the former topological sort bugfix allows me to run the functions
repeatedly and get the same results.