Catalog: more defensive approach
This PR does four things:
- when installing a zim, always override any preexisting content (and do not fail)
- persist cache as soon as a package is marked as installed/removed
- download all packages then install all packages instead of doing download/install by package
- catch download/install/remove errors and continue to the next id to be processed (instead of failing)