Deconstructing AbstractProject

Prototyping a refactoring whereby some code that is currently stuffed into `AbstractProject` and requires you to subclass it could be made available to other `Job` types. (Correspondingly for `AbstractBuild` vs. `Run`.)