Speed up IBA::isConstantColor (#3383)
Speed up IBA::isConstantColor (#3383)

Reminder: isConstantColor() finds out if an ImageBuf is constant
color.  It uses the thread pool to check several areas in
parallel. Once any task finds that its subregion is not constant, it
sets a flag so that as other subregions are pulled off the task queue,
they will take an early out if one of their siblings already knows the
image is not constant.

Turns out this isn't much of a big savings in practice, because lots
of regions may be in flight by the time one region realizes it's
non-constant, and once a region task starts, it doesn't check the flag
again.

This patch speeds up isConstantColor by a pretty big factor for
non-constant images (it can't really help for images that ARE
constant) in the following ways:

1. Before doing anything, it checks to see if the FIRST TWO pixels of
   the image are unequal. If that's the case -- and it's a fairly
   common case for non-constant images -- then it immediately knows
   the whole image is not a constant and doesn't need to look at
   anything else or launch any of the threads at all. (If it is a
   constant image, or if the first two pixels are just coincidentally
   identical, this quick check of only two pixels didn't really cost
   us any masurable time.)

2. In addition to checking the result flag at the start of each
   parallel job, now we also check if the flag has been changed as we
   iterate to each pixel. So pretty much as soon as one thread finds
   unequal pixels, the other threads can spot this and stop their
   tasks early, no need to finish looking at their entire region.  (To
   make the more frequent checks of the flag inexpensive, I changed it
   from an atomic to just a regular bool. It doesn't need to be
   atomic, because the strict ordering is not important at all here
   and it doesn't change the result if the threads' access to the flag
   is unsynchronized.)
OpenImageIO/oiio,lgritz/oiio,lgritz/oiio,OpenImageIO/oiio,OpenImageIO/oiio,lgritz/oiio,lgritz/oiio,OpenImageIO/oiio