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).
The reason why all Haskell files have the "auto-generated" note is because editing these files manually makes our lives much harder. If cabal2nix cannot re-generate the file properly, the whole update process becomes more complicated because updates become a manual effort (instead of just running a single command). This increases the likelihood of packages "bit-rotting" away because non-ghcjs user may not know how to update them. Last but not least, manually edited files break the `hackage4nix` utility, which we use to do QA and maintenance of the package set. These issues aren't solved by *removing the note* when such a build is modified manually. Instead, these files should not be edited manually, just like the note on top says.

In the case of this particular file, I suppose it's probably best to add a separate copy that's used only by ghcjs?

An alternative is to override the contents of this expression by passing a  `cabal` builder with an appropriate `extension` function that re-rewrites the expression as desired. See the way [darcs is built](https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/all-packages.nix#L9328) for an example of how that can be done. In the `haskell-ng` branch, these kind of overrides are even easier to do with the `overrideCabal` method.

Last but not least, you could also hack the `cabal2nix` utility so that it knows how to generate the expression the way you need it, but that's probably more difficult than overriding the standard expression in a separate attribute.