Frozen constraints are stored in `cabal.freeze`.

`cabal freeze` writes the frozen constraints to `cabal.freeze`. It not longer
alters `cabal.config`.

The file format for `cabal.freeze` is the same as used for `cabal.config` but
all sections other than `constraints` are silently ignored.
`D.C.Sandbox.PackageEnvironment` contains a new internal function
`loadFreezeConfig` which loads the `cabal.freeze` file and `mappend`s the
constraints onto an otherwise `mempty` `PackageEnvironment`.

`tryLoadSandboxPackageEnvironmentFile` has been modified to load the freeze
file and `mappend` it to the `PackageEnvironment` it returns.

`loadUserConfig` is no longer exported by `D.C.Sandbox.PackageEnvironment`. A
new function `loadUserAndFreezeConfig` is now exported which returns the
`mappend`ed result of `loadUserConfig` and `loadFreezeConfig`. The single
client of `loadUserConfig` in the cabal-install code base has been updated to
use `loadUserAndFreezeConfig`. As `cabal-install.cabal` does not define a
library, I understand that there can be no clients of `loadUserConfig` outside
of the cabal-install code base.