Futures version of reading ArrayBasedDirectedGraph

ArrayBasedDirectedGraph was not very clear with `apply()` method on almost 200 lines. I've cut it into submethods and rewrite it to futures instead of ExecutorUtil's parallel works.
just confirming. Perhaps @agrewal -- can you also confirm re the syntax of twitter futures?
1. As it stands, is the new code using multiple threads at all? 
2. Is it using the threads of executorService passed in to apply?
3. Are the multiple threads being used for all the statements in the for comprehension?