Create an upgrade service for managing the lifecycle of an in service software upgrade.
Upgrades need to occur in two phases. The first phase involved upgrading the ONOS software running on each node. Once that phase is complete, services need to have an opportunity to update stores and other persistent state. The upgrade service will keep track of the lifecycle of an upgrade by tracking node versions and notifying registered services when the first phase of an upgrade is complete.