Bugfix: If Graph.edges does not contains vertex then return empty list
Implements Simplifier

Simplifier simplify graph by using strong connected components.
implements Graph.show(java.io.PrintStream)
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