Finish up GraphInterface, and add {Un,}DirectedGraphInterface.

Also convert DepthFirst to rely on interface, rather than the adjacency
list family. Abstractions++
Remove Interface suffix from graph interfaces.

In a datastructure library like this, including the Interface is
obtrusive.