Store migration framework enhancements

To enable migration with multiple participants. StoreUpgrader is turned into the
controller of the whole migration process where participants can register
and are later on asked to determine whether or not migration for that
participant is required and if so asked to migrate. Participants can also
declare dependencies that other participants can satisfy.

Although whereas the dependency satisfication and resolution is in place,
that information is not used to reorder the participants, it's fixed to
the order they were added. That can be added later when we see fit.
Merge pull request #2395 from tinwelint/2.1-store-migration-frw

Store migration framework enhancements