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).
I'm going to use Cabal from the 1.22 branch. When 1.22 is officially released, we should be able to just regenerate a new expression over the one I'm creating.