UpgradeManager is responsible for creating a list of UpgradeTasks. For simple upgrades (standard version build 20
to standard version build 21, for example) it's a simple list for that kind of version. A more sophisticated one
(upgrade from standard to enterprise version, for example) can be modeled as a composite subclass of two
UpgradeManagers. Note that all license specific code is strictly put into the corresponding subclass, so whatever
check for enterprise license or things like that is in a specific subclass and not in form of if(enterprise) do bla
code spread here and there.