Add DFS algorithm

This adds a basic Depth First Search (DFS) algorithm which we will be able to extend later to implement other algorithms such as identifying connected components and computing Strahler numbers.

This fixes #2.