Tidying up the code, adding some documentation, and updating the README file.
Issue #4: Computing cycles in the graph

This patch introduces Tarjan's algorithm for computing strongly connected
components in the graph. When looking for strongly connected components, only
components of size > 1 is considered since any node is trivially a strongly
connected components of size 1.

It currently does not catch the case of a vertex that has a loop to itself. If
requested, it can be added.