Added DFS test case with branch.
Temporarily renaming old Node class to UndirectedNode, and created a
new Node class which will have a notion of incoming vs outgoing edges.
Will merge the two back together later.  Added Edge class.
Changed DirectedGraph to store a set ofNodes and Edges.  Nodes also 
maintain lists of incoming edges and outgoing edges.
Added implementation of DirectedGraph.reverse
Moved incoming/outgoing edge information from Node class to 
DirectedGraph class.  Implemented DirectedGraph.reversed method
which returns a new graph with the edges reversed.