Implement a haskell-suite compiler support
Merge pull request #1530 from feuerbach/master

Implement a haskell-suite compiler support
Fix warning.
make rawSystemIOWithEnv close its handles
Look up location of 'ld' etc. in the 'gcc --info' output.

See #1528.
Remove specific username from Makefile
Default Makefile SSH-USER to USER
Rename SSH-USER to SSH_USER for consistency
Merge pull request #1543 from 23Skidoo/ld-ghc-info

Look up location of 'ld' etc. in the 'gcc --info' output.
Merge branch 'master' of github.com:haskell/cabal
Merge branch 'master' of https://github.com/luite/cabal
Provide Functor & Applicative instances for Partial

This follows the advice from

 http://www.haskell.org/haskellwiki/Functor-Applicative-Monad_Proposal#Missing_superclasses

and silences the single compile warning currently occuring with GHC HEAD.
Exception-safety fixes for 'syncProcess'.
Distribution.Compat.CopyFile: add filesEqual for comparing contents
Distribution.Simple.GHC.buildLib: don't remove old files before building

We need them to compare against, so that we can decide if we want to
write new files or keep the old ones untouched.
Distribution.Simple.Program.Ar: Implement re-linking avoidance.

We do this by not putting timestamps into the .a file,
and not touching it if is already there and the contents are the same.
Distribution.Simple.Program.Ar: Emulate GNU ar's deterministic mode.

After invoking ar(1), replace each object file's metadata with zero for the
mtime, UID and GID, and 0644 for the file mode. Do not touch the existing
archive if the contents are the same.

This rewrites the previous patch to,
 ∙ also wipe UID, GID and file mode;
 ∙ do a single read/write for each header, and less seeking in general;
 ∙ do its work inside a temporary directory, via 'withTempDirectory';
   ∘ Which also deletes the temporary target when it's identical to the old.
 ∙ use Distribution.Compat.CopyFile.filesEqual;
 ∙ use the standard 'dieWithLocation' instead of invoking 'error'.
fix-windows