Added depth_first_search(), made structs and traits public.
Merge branch 'master' into integer_graph

Moving master branch from polymorphic branch to
the integer branch in order to more easily
play around with graph algorithms.