Don't freeze non-required installed packages

An InstallPlan contains installed packages in the package database which are not required to satisfy the dependencies of the user targets. To prevent including them in the frozen set of constraints, `Freeze.planPackages` uses `D.C.PackageIndex.dependencyClosure` to try and take the transitive closure of the package dependencies.

Whilst it is possible for `pruneInstallPlan` to fail, only valid `InstallPlan`s are passed to it. If a failure does occur, we error.OThe