Refactoring method for dfs.

Now for:
Vertices(Graph<T> graph) -> returns a dfs for entire graph (a forest if graph is not connected)
Vertices(Graph<T> graph, T vertex) -> returns a dfs for all the vertices reachable from source vertex
Adding Tree method for DFS class and his first test

Method:
Tree(Graph<T> graph) -> Graph<T> where this is a forest resulting of applying dfs algorithm to incoming graph
Tree(Graph<T> graph, T vertex) -> Graph<T> where this a tree graph by doing dfs starting from vertex and keeping only those vertices that are reachable from incoming vertex