Use a PollingTaskGroup to simplify autoscaling

Change-Id: I608930784b18437b4745962dc6f8bdd8b47355b6
Use scheduler for driving autoscaling task

For threads that drive autoscaling events, run them to completion using the
task scheduler, to abstract out the sleeping from the main code.

Change-Id: I9b21404a171d92d6edbc59d3099d3ee34f08e22d
Merge "Use a PollingTaskGroup to simplify autoscaling"
Merge "Use scheduler for driving autoscaling task"