Tarjan's strongly connected component and Shortest Cycle finder algorithm

@see http://stackoverflow.com/questions/10456935/graph-how-to-find-minimum-directed-cycle-minimum-total-weight
@see http://stones333.blogspot.fr/2013/12/find-cycles-in-directed-graph-dag.html

May BC, changed some exception throwing behavior inside edge and graph cloning behaviors.
I found the need to attach metadata to Vertex. For example, if the graph represents a dependency tree, each vertex carries informations about package, url, and so on. It's great to embed the information in the system rather than duplicate the graph somewhere else. It sure does need more documentation.