Remove missing packages before core solving

Remove missing packages along with any package version that depends on
a missing package. Do so recursively so that if a package becomes
missing, other packages that depend on it will also get removed.

Does not take constraints into account, only acts on package removal
when there are no versions in the graph for a given dependency.
Remove now unused special handling of {missing}

Since we entirely remove the missing package, we don't need the code
to handle that during the core solving.