Expose mechanism whereby bytecode enhancement can be run *before* saving incremental compiler hashes.

Splits the compile task into three components:

1. readAnalysis
2. compileIncremental
3. saveAnalysis


Byte code enhancers can inject themselves into 2, although we may want to directly expose an API for bytecode enhancers in the future.


Additionally, this PR attempts to clean up some names throughout the incremental compiler (and add toString for debugging).   Please open the bikeshed arguments on naming, as I'd like to isolate what these components should be called.


Review by @gkossakowski and @eed3si9n cc> @jroper 
It's actually exactly the same as AggressiveCompile.  Just AggressiveCompile was  bad name.   This is bascially an Analyzing compiler that handles both Javac + Scalac, while the AnalyzingCompiler trait only does Scala.

If you have a better idea for a name, let me know!