operation: make in-place handling happen in filter/composer ancestral classes
buffer: hold tile cow mutex only when updating linked list
buffer: use tile-indice based mutexes for tile-writing

This changes both gegl_buffer_set and gegl_buffer_iterator.
buffer: use a 2d instead of 1d mapping for tile locks
buffer: do some thread safety conditionally

Some use of mutexes is a performance impact we want to minimize in the
non-threaded case.
buffer: protect get_tile with tile_storage instead of 2d list of tiles
tile: comment out a mutex lock pair
operation: add threaded boolean to class

This is to enable/disable base-class implemented threading, either for
base-classes for individual ops that conflict with their parents compatibility
with the built in threading mechanisms.
operations: opt a set of non-thread safe ops out of threading
operation: add threading capabilities to base classes

The point of parallelization is during each ops process() at the stage when
input and output buffers have been rigged up. This also means that all pixels
required to be valid in the various input buffers are valid at this point.