Created by: grumpyjames
Summary:
We extract a CompileStepFactory interface from JavacStepFactory, and get DefaultJavaLibrary to depend on it rather than the implementation. This completes the jvmlang agnostification (definitely a word) of DefaultJavaLibrary, leaving a clearer path to implementing compile step factories for other languages.
Test plan: CI