Fixed timedShrinkBW to dispatch to dedicated seq path when mode is falsey.

This more accurately captures the distinction between cut_seq and cut_par
(i.e. cutHorizontalSeamBW_seq / cutVerticalSeamBW_seq vs
cutHorizontalSeamBW_par / cutVerticalSeamBW_par)
Added distinct timing versions of edge detection methods.

Since edge detection is the only parallel routine in the shell
liquid-resize (and also is the current bottleneck), it makes sense to
dedicate a timing routine to it.

Note in particular that this allows one to directly test theories like
"`detectEdges1D()` is faster than `detectEdges2D()`; 2d arrays are
slow."  (A theory which is not actually true, as far as I can
currently tell; ParallelArray `timedDetectEdges2D()` and
`timedDetectEdges1D()` appear to be equally slow in comparison with
WrapArray's `timedDetectEdges2D()`.)
Replaced calls to Math.abs and Math.floor with local JS implementations.

With these changes, the ParallelArray edge detection now starts to
compete with the sequential edge detection.
Merge branch 'isolate-bottlenecks'

Most of this merge is better instrumentation of where time is going.

The main functional change to the benchmark is removal of calls to
Math.floor and Math.abs, which were causing bailouts from parallel
execution.  We should look into that, and correct it if possible.