Tweaked upgrade target selection

upgrades.PerformUpgrade() now takes all the upgrade targets for the
machine being upgraded instead of being called once per upgrade
target. This removes the possibility of upgrade steps being run twice,
simplifies the upgrade-steps worker and also ensures upgrade steps are
run in a more readily understood order.
Remove special casing for the databaseMaster upgrade target

Nows that upgrades.PerformUpgrade() is called once with all targets
for the machine being upgraded there is no need to treat
databaseMaster as a special case. The master state server now gets
two upgrade targets: stateServer and databaseMaster. This simplifies
the code and tests.
Merge pull request #1097 from mjs/upgrade-target-selection

Tweaked target selection

Tweaked upgrade target selection

upgrades.PerformUpgrade() now takes all the upgrade targets for the machine being upgraded instead of being called once per upgrade target. This removes the possibility of upgrade steps being run twice, simplifies the upgrade-steps worker and also ensures upgrade steps are run in a more readily understood order.

---

Remove special casing for the databaseMaster upgrade target

Nows that upgrades.PerformUpgrade() is called once with all targets for the machine being upgraded there is no need to treat databaseMaster as a special case. The master state server now gets two upgrade targets: stateServer and databaseMaster. This simplifies the code and tests.