Add an UpgradeManager

Allows for applying changes only once instead of having to check every start up. Applied changes are saved in a config file that if tampered with would worst-case result in current upgrade behavior.

DatabaseUpdateType is also superceded by UpgradeType, which is applicable to any storage format.