Bandaid for #4592, perhaps fixing #4311
Pkg: explicitly detect unknown required packages

Addresses #4049
Pkg: improve "incompatible with fixed" analysis

Addresses #4049

Keeps track of what fixed packages determined the removal
of some package; uses that information in case one of the
required packages was removed in this way.

Also, recursively remove packages from the available list,
i.e. when a fixed package determines the removal of an available
package because its requirements can't be satisfied, then also all
other packages whose requirements can't be satisfied because of this
removal are themselves removed, and so on. (In case of the error
mentioned above, the blame still goes to the fixed packages.)
Pkg: explicitly early requirements check

Addresses #4049

If fixed packages have conflicting requirements, provide
a detailed error message.
Pkg: deepcopy reqs, define it for VersionSets

We need to explicitly copy the Vector inside
VersionSets since it's immutable.
Pkg: code cosmetics
Merge pull request #4596 from carlobaldassi/pkgerrors

Improved Pkg error messages