fix NPE in rebalancing; extract HostManager

The NPE could occur when rebalancing a job that has many disabled
minions holding tasks for it. This caused the job to error and
enter a weird state besides.

HostManager basically just handles the lowest level operations
surrounding the ConcurrentMap of HostStates. It manages to replace
overkill-Spawn references in a couple places, and is another step
in our goal of breaking down Spawn responsibilities to eg. enable
us to stop passing "this" everywhere and clarify inter-dependencies.