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.
Well, I don't recall right now. I'll keep this separated in another PR, it does not seem to be mandatory for tarjan.