Add cabal default dir flag

This adds a `cabal-default-dir` flag and configuration item. When this is set, it will be used to place `setup-exe-cache` in the right place, thus dealing with https://github.com/haskell/cabal/pull/1126 and https://github.com/haskell/cabal/issues/1242.

I am afraid I am not a regular cabal contributor, so I do not know all the places this should be used. I am most interested in dealing with `setup-exe-cache`, but I feel that it would be wrong to have this feature if it is blatantly disrespected elsewhere. What other places should this be used instead of `$HOME/.cabal`?