Depth First Search Iterative Implementation

DFS "explore aggressively, only backtrack when necessary"
Has applications on directed graphs: computes a topological ordering of
a directed acyclic graph
Computes strongly connected components of directed graphs
Run Time: O(m+n)
Added DFS recursive implementation