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 
If it were for any other task, "saveAnalysisAfterCompileAndReturnIt" would just be called `compile` like we don't call `update` "saveUpdateReportUsingSbinaryAfterUpdateAndReturnIt." The explicit mentioning of "saving" sticks out.