Scatter, parallel implementation, via two distinct strategies.

I still need to evaluate whether both strategies are worth keeping.
We may be better unconditionally using Divide-Scatter-Vector,
as discussed on mailing-list.

Squashed commit of the following:

commit d9401635f57835854a7d8b490175a381f0862099
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 20 17:14:50 2012 +0100

    Cleaning up code.

    - got rid of some outdated uses of the conflicts array (where I was
      storing write-counts rather than the current booelan flags),

    - simplifed the cody of fill_handlecollide (previously named fill1b),

    - tried to clarify some of my comments.

commit 0aefddd0ff11f5e9f03ae78485339a2bc91f2173
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 20 12:18:25 2012 +0100

    Remove println instrumentation from ParallelArray.js.

commit c62b72cfcb964d89d91e5cfed6d3ee925f953228
Merge: c133355 45ac1b1
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 20 12:06:19 2012 +0100

    Merge branch 'master' into fsk-workarea.

    pulling in a merge with master so that I can start preparing a cleaned
    up candidate commit.

commit c13335551b34c9f406d674cf2e43634ecb8ac2ed
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 20 11:36:31 2012 +0100

    Fixed occurrences of ComputeSliceBounds (alpha-renamed from ComputeTileBounds).

commit 5a5cb033670213ae47d4421182a4ba337e2dcfd6
Merge: 7845fdb a7c8616
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 20 10:24:18 2012 +0100

    Merge remote-tracking branch 'github/master' into fsk-workarea

    Resolved conflicts:
    	js/src/builtin/ParallelArray.js
    (Niko alpha-renamed ComputeTileBounds to ComputeSliceBounds, and I
     meanwhile had fixed a bug in the invocation of that function in
     the case of scatter.)

commit 7845fdbe3b07cb96d94b456ddb61176a7298a352
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Wed Dec 19 22:36:31 2012 +0100

    Update code to fit Shu's changes to warmup handling.

    In addition to the new %EnterParallelSection and %LeaveParallelSection
    intrinsic calls, there are also now explicit calls to the fill
    functions that act as the warmup (rather than the previous implicit
    warmup calls that were used).  I think this actually made my life
    easier because:

    1. It made it easy for me to insert mulitple warmup calls with
       different parameter settings, to increase code coverage, and

    2. It gave me a spot to reset any shared state after the warmup
       calls ran, so that I could zero it out before calling the
       "real" parallelized execution.

commit b3e8aa3544834f081b37cc212fd9a671302d9208
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Wed Dec 19 16:23:34 2012 +0100

    Update to reflect what I believe are Shu's changes.

commit c36e4a4818c50ec221e9f966494727dc6739fe8e
Merge: 4aa54b6 f28b997
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Wed Dec 19 16:05:17 2012 +0100

    Merge remote-tracking branch 'github/master' into fsk-workarea

    I want to pull in Shu's work on warmup-less transitive compilation
    because I am struggling with bailout issues and am currently thinking
    it is due to differences in warmup versus actual execution.

commit 4aa54b66f7cd1bae9fbf67f0ca8536ffd3daf047
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Wed Dec 19 15:56:49 2012 +0100

    Checkpointing instrumentation I put in while dissecting bailout behavior.

commit 3ced996a09340de3bf77d754c365cbf5610a9efc
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Mon Dec 17 20:13:05 2012 +0100

    Checkpoint state.  Still cannot puzzle out how to reliably read from
    arrays in general in my parallel threads: my code keeps bailing out.

commit b1a2b933ec8e29b2cbccab8cc7db99afda732adf
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Mon Dec 17 18:58:02 2012 +0100

    Conditianalize instrumentation.

    Revised the instrumentation to handle case when user does not
    pass a printer function up through the option map 'm'.

commit 1bb3dee04607b95521de0b109c5a1967ce43d03d
Merge: 033a177 0d13b24
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Mon Dec 17 18:46:23 2012 +0100

    Merge branch 'master' of https://github.com/syg/iontrail into fsk-workarea

    Pulling in improvements from Shu and Niko into my topic branch because
    I am frustrated by my inability to express certain constructs in my
    parallel routines (e.g. throwing exceptions, intrinsics like
    DenseArray%)

commit 033a177e47741380a5c9f0769648e19e834c454f
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Mon Dec 17 18:37:40 2012 +0100

    Implementation of divide-output-range scatter implementation strategy.

    This also includes a gross amount of instrumentation, various fixes to
    comments, and a bug-fix to ParallelArrayScatterSeq, which was
    previously clamping the limit of the input traversal based on the
    output length, which will miss elements in suffix of the input that
    might be scattered into the earlier points in the output.

commit 10a0e6124c8bd16b2ecab65b5e58aad8340991f0
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Mon Dec 17 18:35:28 2012 +0100

    Some tests of the specific scatter stategies.

    These tests focus on specific scenarios (gap-free collision-free
    permutation, rearrangement with gaps, and rearrangement with
    collisions).

commit 3bd2a206581c8447a57e6baab18ed7a9f36e431a
Merge: 5cb0b0a 9c64e1d
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Fri Dec 14 17:06:56 2012 +0100

    Merge branch 'fsk-workarea' of https://github.com/pnkfelix/iontrail into fsk-workarea

    I think I again rebased locally without thinking hard enough about
    where I had pushed previously.  Presumably this is a trivial merge.

commit 5cb0b0ac250163ca05b82efe27e24fa4c1ed409d
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Fri Dec 14 16:35:49 2012 +0100

    First semi-plausible parallel implementation of 'scatter()'.

    It only implements one of the two parallel strategies outlined in the
    comments.  It also takes a rather awkward route for the fail-fast on
    collision variant.  Both issues should be fixed soon.

commit c43b544d1ef154984dbc2b99b81aa8887bdfd489
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 13 18:59:49 2012 +0100

    stash work for the day.

commit 9c64e1d168a5ee1a0647f33ebcf3c38515856d15
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Fri Dec 14 16:35:49 2012 +0100

    First semi-plausible parallel implementation of 'scatter()'.

    It only implements one of the two parallel strategies outlined in the
    comments.  It also takes a rather awkward route for the fail-fast on
    collision variant.  Both issues should be fixed soon.

commit 550588642375b13ed590f56245dd34fba879a921
Author: Felix S. Klock II <pnkfelix@mozilla.com>
Date:   Thu Dec 13 18:59:49 2012 +0100

    stash work for the day.