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 
> This is a compiler that mixes the `sbt.compiler.AnalyzingCompiler` ... with a `xsbti.JavaCompiler`

Is there a situation in which that is not desirable? Why does this warrant a creation of a new object instead of just adding methods to existing `IC` or something?