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.
Arguably this is a useful addition. Graph theory commonly refers to the number of edges as the *length* or *size* of a walk.

However, I suppose this might be misleading with regards to a Walks vs. Paths and also might be mistaken as counting the number of *vertices*.

Either way, we should consider if we can avoid this ambiguity by not providing this method at all and asking users to explicitly call `$length = count($walk->getEdges())` instead.