Optimize scc algorithm.

If you know a vertex (call x) can be reachable from other vertex,
it is verbose to execute SCC.visit(x).
To speed up scc algorithm, you can specify roots (a set of vertex).
Then SCC.stronglyConnectedComponents(graph, roots) only executes
SCC.visit(v) if v is included in roots.

And when a vertex (call x) is already contains some scc,
it is also verbose to execute SCC.visit(x) in SCC.stronglyConnectedComponents.
optimize: use ArrayList instead of Map
speed up using trove
Optimize:If a vertex is already included a scc then do not visit it.
Clean Test
Implements toStringIndex
Implements sim which simplify graph by simulation relation
refactor scc
implement getRootIndices
bugfix consider self-loop
refactor test; at least one edge outgo
bugfix: avoid self loop
Merge branch 'optimize'