ENH: add reverse kwarg for topo sort

Add an option to reverse the topo sort list; the reversed order is more natural.

The interface is inspired by http://networkx.github.io/documentation/latest/_modules/networkx/algorithms/traversal/breadth_first_search.html#bfs_edges and also python `list.sort()` and `sorted()`.  Some of the networkx code uses the topo sort just to check for cycles, and these checks could be sped up a bit by using `reverse=True` to avoid the reverse(sorted(ordered)) at the end of the call, but I haven't made these changes because I'm not up for writing the benchmarking code.