Add basic support for GHCJS

This patch encompasses most of the basic infrastructure for GHCJS. It
includes:

  * A new extension, -XJavaScriptFFI
  * A new architecture, ArchJavaScript
  * Parser and lexer support for 'foreign import javascript', only
    available under -XJavaScriptFFI, using ArchJavaScript.
  * As a knock-on, there is also a new 'WayCustom' constructor in
    DynFlags, so clients of the GHC API can add custom 'tags' to their
    built files. This should be useful for other users as well.

The remaining changes are really just the resulting fallout, making sure
all the cases are handled appropriately for DynFlags and Platform.

Authored-by: Luite Stegeman <stegeman@gmail.com>
Signed-off-by: Austin Seipp <aseipp@pobox.com>
Fix ghc-pkg list --simple-output not being alphabetical (#8245).

It was sorted by version number so far.

I also added a sort to the normal output (without --simple-output)
since the source it comes from does not guarantee sortedness.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
Record PAP allocation to CCCS.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
resurrected -fdicts-strict, off by default

also added -fdmd-tx-dict-sel, on by default
Default to infinite stack size (#8189)

When servicing a stack overflows, only throw an exception to the given
thread if the user explicitly set a max stack size, using +RTS -K.
Otherwise just service it normally and grow the stack.

In case we actually run out of *heap* (stack chuncks are allocated on
the heap), then we need to bail by calling the stackOverflow() hook and
exit immediately.

Authored-by: Ben Gamari <bgamari.foss@gmail.com>
Signed-off-by: Austin Seipp <aseipp@pobox.com>
Avoid allocating while holding a lock (#8242)

This reverts commit 6770663f764db76dbb7138ccb3aea0527d194151.

If the program enters the garbage collector with the closure
lock held, it will confuse the garbage collector and will
result in an infinite loop in evacuate().

Signed-off-by: Austin Seipp <aseipp@pobox.com>
Note infinite stack default in release notes.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
Revert "Default to infinite stack size (#8189)"

This reverts commit d85044f6b201eae0a9e453b89c0433608e0778f0.
Revert "Note infinite stack default in release notes."

This reverts commit c798a8c6c66d826efdc0201fa56d45337eecc2af.
Merge remote-tracking branch 'origin/master' into ghc-parmake-gsoc