vtkCompositeDataPipeline: Remove redundant code

Note: some of this went into VTK master. Merge with care.
vtkThreadedCompositePipeline: Parallel execution of multiblock data

- vtkCompositeDataPipeline is refactored to support the new class.
- vtkParallelFor is a stand-in for tbb:parallel_for. The main benifit
  is that it does not give false positives when used with helgrind.
- The rest of the changes are there to eliminate race conditions.
vtkSynchronizedTemplates3D: Fixes a bug that handles ExecuteExtent incorrectly

Note: This change has gone in the master.
Performance enhancement: Support multiple point insertion

The main addition is vtkPoints::AppendPoints(). It allows multiple
points to be copyied through memcpy(). If the number of points is
large, this is much faster than copying through assignment one by one.
Towards a generic multithreading framework.

- Two more passes are added to the pipeline to handle splitting and
  merging data.

- Filters that support the passes are vtkSynchronizedTemplates3D and
  the child class vtkSynchronizedTemplatesCutter3D. The CleanMerge()
  function used by vtkSynchronizedTemplates3D is optimized to merge
  vtkPolyData that has duplicate vertices across image boundaries. If
  we decide to take the approach here, the function should be
  extracted to its own class to allow for reuse.
Speeding up vtkDataArray insertion operations

- vtkDataArray::InsertNextTuple is sped up.

- Two copy utility classes, CopyHelper and LazyCopy, are introduced to
speed up vtkDataSetAttributes::CopyData(). Their uses are demonstrated
in several filters.
Experimental code to speed up contouring filters.

The optimization is able to squeeze out a few percentage point
performance.