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.
Actually can't make it static as it needs a reference to `stat` and `plannedCapacitiesEMA` also