releaseTools: Add ‘aggregate’ function

An aggregate is a trivial build that depends on other builds.  This is
intended to provide a declarative replacement of Hydra's "view"
mechanism.

For instance, you can define an aggregate named "critical" that
depends on a selected set of jobs:

  critical = releaseTools.aggregate
    { name = "foo-${tarball.version}";
      members =
        [ tarball
          build.x86_64-linux
          ...
        ];
      meta.description = "Release-critical builds";
    };

The "critical" build will only succeed if all its members
(dependencies) succeed.
Make Nixpkgs jobs unique

That is, there are now distinct jobs like ‘coreutils.x86_64-linux’ and
‘coreutils.x86_64-darwin’, rather than a single job ‘coreutils’ with
multiple builds.  This means that testing a job is simpler:

  $ nix-build pkgs/top-level/release.nix -A coreutils.x86_64-linux

See https://github.com/NixOS/hydra/issues/60 for the motivation.
Remove broken ‘removeList’ function
Only return Hydra jobs for supported platforms
eval-release.nix: Handle the new job structure

Now that we don't need to pass "system" arguments anymore, this thing
is *almost* obsolete.  (Except for the need to handle assertion
failures, you could just do "nix-instantiate --eval-only ..." on
release.nix.)
Add an "unstable" aggregate to replace the "unstable" view

Views are obsolete, aggregates are the declarative replacement.