Ext. setup method: check that the old setup exe exists/is not stale.

Old behaviour resulted in weird errors in some circumstances (e.g. if '~/.cabal'
was deleted between 'configure' and 'build').

Fixes #1570.
Cache the setup executable for 'Make' and 'Configure' build types.

Can improve 'install -j' times a little bit for large install plans.
Comment.
cabal-install: Use 'getModTime' consistently everywhere.

We can't do the same for the Cabal lib because of the MIN_VERSION macros.
Move the code around a little bit.
TODO.