Enable UpdateManager to support Install / Uninstall 

This PR refactors UpdateManager to be way easier to read, and also adds the facilities for fully installing / uninstalling (i.e. applying a package when there is no initial app directory)