Merge branch 'graph' into dev
Adding Classic class and constraining IGraph interface

Classic class:
It should be use for generation of classic graph models like complete graph, bipartite,
path graph, etc.

Adddin new() contraints to IGraph interface for having option of creating empty graph

Method:
EmptyGraph(int n) -<> return a TGraph with n nodes and no edge
Adding CompleteGraph method to Classic class
Fixing Reverse method in DiGraph class
Tweaking a lot related to graph inheritance and constraints.

Also, now a IGraph also has a TGraphData parameter
Merge branch 'graph' into dev
Merge branch 'dev' into models

Conflicts:
	Code/SmartNet/Algorithms/Traversal/BFS.cs
	Code/SmartNet/Algorithms/Traversal/DFS.cs
	Code/SmartNet/Interfaces/IGraph.cs
Updating Classic class for change in graph and related classes
Adding data associated to graph (GraphData and IGraphData)

Also, rewriting methods signature in traversal classes for handling issues with generics and constraints
Updating ToString of DiEdge class
Merge branch 'models' into dev
Merge branch 'dev' into graph