Created by: grumpyjames
Summary:
The main goal: to decouple JavacOptions from DefaultJavaLibrary. We end up passing an instance of JavacStepFactory (which will probably sprout an interface named 'CompileStepFactory' shortly). This means the DefaultJavaLibrary::getOptions is now only called from Project. Android extensions to DefaultJavaLibrary extend their javacOptions at step creation time by providing a custom JavacOptionsAmender.
Lots of other small changes along the way. We found one or two places where we had to encapsulate better in order to make progress - one or two tests disappear or move to different places as a result.
Test Plan: CI