distro#get_all_package_impls now returns a map

This saves a bit of searching in some places, makes distribution
implementations more consistent with non-distribution implementations
and should make it easier to migrate PackageKit support to OCaml.
Separated handling of host Python packages

Moved most of the logic out of the Python.