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 don't understand why all these overrides are necessary. First, `base_4_7_0_1` is defined as `null`. Then that name is re-defined as `base`, So now we have two defines for `base`, both of which point nowhere (i.e. to `null`). Why? What is the purpose of that? Why do we need those attributes for some many packages?