Rewrite autoscaling and enable easier configuration of worker selection and autoscaling behaviour

workers == middle managers in this case, so this strategy is comparing a datasource against viable middle managers