haskell-Strafunski-StrategyLib: jailbreak to fix build with GHC 7.8.2
Re-write the Haskell Platform out of haskell-defaults.nix.

We used to configure library versions for every compiler that corresponded
(roughly) to the Haskell Platform that was current at the time the compiler was
released, i.e. GHC 6.10.4 builds would run with ancient versions of QuickCheck,
HTTP, etc. This whole approach is now gone. The Haskell Platform has no effect
on our default library selection any more; we generally provide the latest
version possible that the respective compiler can build.

To simplify our configuration even further, we dropped all intermediate GHC
releases from all-packages.nix. What remains is a haskellPackages_ghcXYZ set
for the latest version of every major release branch, i.e. GHC 6.10.4, 6.12.3,
7.0.4, 7.2.2, 7.4.2, 7.6.3, 7.8.2, and 7.9.x (HEAD snapshot).

Furthermore, there are some new features:

 - 'cabalLatest' is a variant of the 'cabal' builder designed that drives the
   build with a recent version of Cabal, instead of the version shipped with
   the compiler. This function is useful for building packages that use funky
   Cabal features that GHC 6.x and friends don't support. With this builder,
   the compiler will be able to handle those Cabal files.

   On modern compilers, however, cabalLatest does nothing, i.e. it's just an
   alias for 'cabal'. The reason for this is that overriding Cabal is tricky --
   it's a core library -- and a number of builds fail with version conflicts
   when built with a non-standard Cabal library. This applies particularly to
   every package that uses hspec/doctest for their test suite as these
   libraries depend on the GHC-API, which in turn depends on Cabal. So these
   packages always pull the native version in.

 - The 'cabal' builder has a brand-new argument called 'extension'. That
   function is "self : super : {}" by default, but, users can override it to
   mess with the attribute set passed to cabal.mkDerivation. An example use
   would be the definition of darcs in all-packages.nix:

   | darcs = haskellPackages.darcs.override {
   |   cabal = haskellPackages.cabal.override {
   |     extension = self : super : {
   |       isLibrary = false;
   |       configureFlags = "-f-library " + super.configureFlags or "";
   |     };
   |   };
   | };

   In this case, extension disables building the library part of the package to
   give us an executable-only version that has no dependencies on GHC or any
   other Haskell packages.

   The 'self' argument refers to the final version of the attribute set and
   'super' refers to the original attribute set.