topological sort now returns an array of sorted edges as well. Working on an O(E) forward filtering implementation.
added a new_forward_filtering that should run in O(E) providing the topological sort gets optimized.