cabal-install: Add command 'cabal user-config diff'.

This command prints out a psuedo-diff between the user's `~/.cabal/config` file and what cabal would generate if it did not exist.

Tested with ghc 7.8.3 and 7.4.2. I'm trying to write a unit-test for it, but that's a little 'deep'. Thought I'd get some feedback on this first.

Well, my idea was to have code related to the `user-config` command in the `UserConfig` module, and `loadConfig`/`baseSavedConfig` etc in their own module.

> As for the `SavedConfig` vs `UserConfig` I think the name of the data type should match the name of the command which is 'user-config'. 

`loadConfig` etc. is also used in the sandbox code to load `cabal.sandbox.config`/`cabal.config`, so I think that a more general name is better here.

> I switched from 'saved-config' to 'user-config' for the command name because I thought the later gave a much clearer picture of where this config was stored; its stored in the user's home directory. 

I agree that `user-config` is a good name for the command (since it only manipulates `~/.cabal/config`).