Adds control-flow based incremental linker pruning.

Previously incremental linking was accomplished by creating and 
maintaining an index of type<->type references, using these references 
to construct a transitive graph of referenceable types and outputting 
the full JS for each such type.

Though simple and fast it also had larger total output than necessary
since some types were unnecessarly kept (for example types were kept
that were only referenced in functions that could never be called).

This patch switches to incremental linking based on control flow. This 
is accomplished by maintaining caller->callee, instantiating 
method->instantiated type, overridden method->overriding
method and other control flow information indexes, using these indexes
to construct a complete graph of reachable methods, and then throwing 
out any types that do not supply at least one of the reachable method.

Change-Id: Ied32634bf535f74c0e934f3940226c05f4f6d3b1
Review-Link: https://gwt-review.googlesource.com/#/c/10680/
diff --git a/dev/BUILD b/dev/BUILD
index f0ec39a..3c325e4 100644
--- a/dev/BUILD
+++ b/dev/BUILD
@@ -183,6 +183,7 @@
             "core/src/com/google/gwt/dev/PrecompileTaskOptions.java",
             "core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java",
             "core/src/com/google/gwt/dev/PrecompilationResult.java",
+            "core/src/com/google/gwt/dev/StringAnalyzableTypeEnvironment.java",
             "core/src/com/google/gwt/dev/cfg/**/*.java",
             "core/src/com/google/gwt/dev/javac/**/*.java",
             "core/src/com/google/gwt/dev/jdt/**/*.java",