Added qualifier to 'PackageConstraint' data type.
Refactored PackageConstraint in two ways: 1) split it into a package name and a 'PackageProperty' to make the code a bit cleaner; 2) changed PackageName to 'Qualified PackageName'. Added a Binary instance for Qualifier in PackagePath.hs (needed for PackageConstraint). Added pretty-printing code for PackageConstraint. For now, all the code that creates a PackageConstraint just sets the qualifier to 'unqualified', so this commit will not change the external behaviour of cabal-install.