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.
Nice addition! :+1: 

In my opinion this needs some more attention and probably makes sense as a separate PR so we can track this as a separate feature.