Suggest that 'ExitFailure 9' is probably due to memory exhaustion.

Fixes #1522.
Add a key-value map to the Compiler type.
Use the compilerProperties map instead of invoking 'ghc --info'.

Fixes #1442.
Fix cabal repl handling of Ctrl-C
Merge pull request #1523 from 23Skidoo/exit-failure-9

Suggest that 'ExitFailure 9' is probably due to memory exhaustion.
Merge pull request #1535 from dagit/cabal-repl-fixes

Fix cabal repl handling of Ctrl-C
Merge pull request #1520 from 23Skidoo/compiler-properties

Store compiler properties in a key-value map instead of repeatedly invoking `ghc --info`
Bump the dependency on 'array'.
Bump the dependency on 'array'.
getModTime: Convert Windows time to POSIX seconds.

Fixes #1538.
Fix warning on Windows.
Unbreak the build on Windows.

Broken by #1535.
80-col violation.
configureToolchain: use the compilerProperties map.
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.
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,
 ∙ use Distribution.Compat.CopyFile.filesEqual;
 ∙ also wipe UID, GID and file mode;
 ∙ do less seeking around;
 ∙ do its work inside a temporary directory;
 ∙ use the standard 'die' instead of invoking 'error'.