[FIXED JENKINS-22131] Deconstructing AbstractProject

[JENKINS-22131](https://issues.jenkins-ci.org/browse/JENKINS-22131): 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`.)