Stop-the-World Garbage Collection for ParallelDo.

This includes the following changes:

  * Add StackExtents abstraction, allocate one for each thread

  * Threads maintain their own StackExtent (must be valid before yielding to GC)

  * The GC walks through the list of StackExtents and walks each one via
    the same stack scanning code.

  * Added mandelbrot benchmark more like one from Rivertrail demo.

Also added the following drive-by changes:

  * The ForkJoinShared object has a vector of ForkJoinSlice*; each
    slice inserts/removes self in its constructor/destructor.

  * Augmented test call-to-method-mut.js with checks of return value
    from p.map call that is supposedly disqualified to ensure e.getA
    mutation is still happening.
Reenable background sweeping.
Fixed comment formatting in some places.
Cannot sweep during arena adoption, so put previous assertion back.

As a drive-by fix, also removed clearing code that I (Felix) added
experimentally but have no confidence in.
Cleanup: Factored assertion loop out into constructor for stack extents.
Merge branch 'master' into pjs-stop-the-world-gc

Resolved conflicts:
	js/src/vm/ForkJoin.cpp
Merge pull request #4 from pnkfelix/pjs-stop-the-world-gc

Stop-the-World Garbage Collection for ParallelDo.