Merge branch 'traversal' into algorithms
Merge branch 'algorithms' into dev
Merge branch 'dev' into graph
Adding delegates to abstract factory pattern

Delegates:
- TEdge EdgeFactory<TVertex, TEdge>(TVertex source, TVertex target)
- TVertex VertexFactory<TVertex>(Dictionary<string, string> attributes)
Refactoring graph associated code

Deletions:
- BaseContainer ('cause any data for an edge belongs to TEdge type specified now)

Addition:
  Interfaces:
  - IGraph<TVertex, TEdge> base interface for all graphs types
  Classes:
  - BaseGraph (common abstract class for graph and digraph)

Reworking the rest of the code and tests to match the mentioned changes
Renaming object type from BaseGraph to Graph
Merge branch 'graph' into dev
Moving IGraph into SmartNet.Interfaces namespace
Saving .csproj file
Modifying IGraph for more extensibility and updating DFS and BFS

Methods added to IGraph interfaces:
- RemoveVertex(TVertex vertex)
- RemoveVertices(IEnumerable<TVertex> vertices)
- RemoveVertices(TVertex[] vertices)
- RemoveEdge(TEdge edge)
- RemoveEdges(IEnumerable<TEdge> edges)
- RemodeEdges(TEdge[] edges)

Also changing return types of Tree methods in DFS and BFS classes
Merge branch 'graph' into dev
Merge branch 'dev' into algorithms
Merge branch 'algorithms' into traversal
Refactoring code for traversal algorithms and graph class

Modifications:
- Instead of IGraph<TVertex, TEdge>,now it is IGraph<TGraph, TVertex, TEdge>:
This is for allowing returning TGraph from Subgraph methods

- BaseGraph does not implement IGraph interface anymore:
Now IGraph interfaces is implemented by concrete graph classes

Extras:
Readapting algorithms code for match the above changes