Adding BFS class for bfs-like traversal algorithms
Merge branch 'dev' into graph
Removing ConsoleTest project from this branch
Merge branch 'dev' into graph
Removing ConsoleTest project from this branch
Merge branch 'dev' into traversal

Conflicts:
	Code/SmartNet/Algorithms/Traversal/BFS.cs
Merge branch 'dev' into graph
Merge branch 'algorithms' into traversal
Change dictionary for set in code implementation of dfs traversal
Implenting BFS of vertices and creating first test

Methods:
- IEnumerable<T> Vertices<T>(...) in class BFS

Test:
- FromEndOfPathGraph
Adding BFS method for returning graph edges

Method:
- IEnumerable<T> Edges(..)

Adding more test for BFS for vertices and first test for BFS for edges

Tests:
- BFSForCycleGraph
- EdgeBFSForPathGraph
Adding test for Edges method in BFS class and fixing a bug

Bug:
Missing the mark of the first vertex of the algorithm

Test:
- EdgeBFSForCycleGraph()
Adding Subgraph methods for Graph class and his first test

Methods:
- Subgraph(IEnumerable<T> vertices)
- Subgraph(params T[] vertices)

Test:
- SubgraphForPathStringGraph()
Adding methods for adjacency list in Graph class

Methods:
- IEnumerable<IEnumerable<T>> AdjacencyListIterator()
- T[][] AdjacencyList()
Adding tests for Subgraph and AdjacencyList methods

Tests:
For Subgraph method:
- SubgraphForEmptyStringGraph()
- SubgraphForCycleStringGraph()

For AdjacencyList method:
- AdjacencyListForEmtpyStringGraph()
- AdjacencyListForVertexStringGraph()
Merge branch 'dev' into graph
Merge branch 'algorithms' into traversal
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
Adding test for creating tree from graph and vertex source

Method:
- Tree(Graph<T> graph, T vertex)

Test:
- DFSTreeFromVertex