Refactor NodeProvisioner to allow for extension of strategies

Note to reviewers: [ignore whitespace changes](https://github.com/jenkinsci/jenkins/pull/1433/files?w=1) to see the logic changes more clearly.
Moving this set of changes (`isAcceptingTasks`) out of this pull request