Refactor fetchurl handling in stdenvLinux

All the different stages of stdenv had the fetchurl inherited anyways,
so make this generic in stdenvBootFun.

This commit doesn't change the outhash (or drvhash) of the stdenv.
Refactor wrapGCC in stdenvLinux

Don't use default parameter values, to make the callsites more readable
and for easier debuggability/changability.  Also reordered the
callsites' parameter ordering for consistency.

In the final stdenv don't repeat the name of the shell.

This commit doesn't change the outhash (or drvhash) of the stdenv.
Refactor stage handling in stdenvLinux

Make stages explicit and generalize the pattern of having an stdenv and
a pkgs collection for all stages to a common stage generating function
called stageFun.

Rewrite all stage handling with this new function.

This commit doesn't change the outhash (or drvhash) of the stdenv.
Move wrapGCC helper up

This commit doesn't change the outhash (or drvhash) of the stdenv.
Refactor stages to only ever refer to the previous stage

This commit doesn't change the outhash (or drvhash) of the stdenv.
Merge branch 'nilcons-contrib-stdenv_stages_refactor' into staging
Indentation
Fix evaluation
Fix zlib handling in stdenvLinux

Previously stdenv depended on two different zlibs and there was a third
one in the top-level package set for other purposes.  This commit merges
all this zlibs to one.
GCC >= 4.8 doesn't depend on ppl
ed: update to 1.10 (close #3852)
mutiout: make it builtin
Merge branch 'staging' into v/modular

Conflicts (as in p/modular-stdenv):
	pkgs/stdenv/linux/default.nix
gawkInteractive: fix eval
multiout: resolve general ToDos