Merge branch 'dev' into graph
Adding DiGraph class to SmartNet
Adding classes and fixing some issues

Classes:
- DiGraph: For the usage of directed graph in SmartNet
- DiEdge: Represents the existence of a relation between Source -> Target

Besides:
Adding indexer declaration to interface IEdge
Changing string message for edges not found in Graph class
Filling remaining methods in DiEdge and Digraph classes

Also fixing minor details in constructors of Edge after adding more constructors
Adding constructor for DiEdge class

Changing IEdge interface:
IEdge<TVertex> -> IEdge<TEdge, TVertex>
and updating the rest of the code to match this change
Adding TData parameter for IEdge interface

This change implies a lot of rewriting in other interfaces (classes)
implementing IEdge (TEdge : IEdge).
Adding simple classes for handling common cases of graph interactions

Classes:
- SGraph<TVertex> for creating a Graph<TVertex, SEdge<TVertex>, Data>
- SDiGraph<TVertex> for creating a DiGraph<TVertex, SDiEdge<TVertex>, Data>

These classes use the following auxiliary classes:
- SEdge<TVertex> for creating an Edge<TVertex, Data>
- SDiEdge<TVertex> for creating an DiEdge<TVertex, Data>
Fixing changes in UnitTest project to match the last changes in SmartNet
Solving edge creation and reversing for graph
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