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.

Its not that difficult to move them, but if we do, we should also move `loadConfig`, `baseSavedConfig` and a bunch of other functions as well. Once we're doing all that, it should probably be a separate commit and PR anyway.

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'. 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. The fact that this config belongs to the user is IMO a much more important clue than the fact that it is saved (saved where?).