Add support for GHCJS

This provides a (AFAICT) fully working GHCJS package set.

@peti Can I get your feedback on how to best merge this in? I'm sure there are some things to consider, like if/how we should specify that a given package supports GHCJS (or more generically, any particular compiler).
> Why do you introduce those additional arguments to the function instead of simply overriding the cabal attribute to point to the ghcjs builder in the configuration function for the ghcjs package set? The same goes for the wrapper?

Actually, now that I think of it, `cabal` is defined in `pkgs/top-level/haskell-packages.nix`, which is the only place where we can have access to configs like `enableLibraryProfiling`. So overriding `cabal` in `pkgs/top-level/haskell-defaults.nix` won't work.

As an alternative to what this PR currently has (the extra arguments), I suppose we could also define something like `cabal-js` in `pkgs/top-level/haskell-packages.nix`, and then set `cabal = cabal-js` in the `prefFun` for ghcjs in `pkgs/top-level/haskell-defaults.nix`.

What approach do you think would work best, @peti?