Make KPackage installation/delete/update return new package
- This avoids the risk of dangling pointer and the internal API needed to avoid that
- We did not override the methods of the PackageStructure to install/update/delete the entries. Thus we can avoid the large callstack and tell consumers to use the PackageJob class directly.
- By having the install/update/delete outside of the KPackage::Package class, we ensure that this class remains a simple container for accessing the package. Also, one needed to crate a dummy package when installing a new one. This is weird, because you create a package for a file that is not yet installed.