Refactor pkgs/stdenv/linux/default.nix

The resulting code is 20% shorter and easier to read, since
we make the staging logic a bit more explicit.  Also, through
the stages we look back to the previous stage definition only.

The refactoring doesn't change the semantics at all, the same
output/derivation hashes are generated on both i686-linux and
x86_64-linux.
Merge 3 runtime zlibs to 1

There were 3 zlibs lying around in case of linux:
  - 1 used by gcc (for JAR handling in the Java frontend),
  - 1 used by stdenv other tools (e.g. binutils),
  - 1 for the rest of the system.

This was because of some knot-tying issues in the stage/round logic in
the linux specific pure stdenv builder.