Add vtkAbstractTypeMacro for abstract vtkObject subclasses.

This allows abstract interfaces to define:
* IsA
* IsTypeOf
* SafeDownCast
* GetClassNameInternal

While ignoring the methods that cannot be used on abstract classes:
* NewInstanceInternal
* NewInstance

Change-Id: Ied61bf69b8caa3b5497766510fa5592d22eba117
Add setters for vtkGenericCell's points/point-ids.

This is done for performance reasons in the upcoming
vtkCellIterator class.

Change-Id: Ie03d620c2f653a9e55cfcfd4f87a5e4ce7353271
Reuse memory in DeepCopy implementations.

Many implementations of DeepCopy in array objects
reallocated memory each time DeepCopy was called. This
patch modifies these methods to reuse memory, if possible.

Squeeze() is called after copying to prevent memory bloat.

Change-Id: Ibf5f86bd0032bf2c7aa7c61787d123ca1a7c3b67
Add vtkCellIterator for traversing cells in data sets.

This provides a generic method for traversing cells in
subclasses of vtkDataSet. Three implementations of the
vtkCellIterator interface are provided:

* vtkDataSetCellIterator: Use vtkDataSet API to look up cells
  using random access.
* vtkPointSetCellIterator: Use the vtkPointSet API to look up
  cells using random access. Advantage over
  vtkDataSetCellIterator is that points are looked up as a batch
  operation.
* vtkUnstructuredGridCellIterator: Use the vtkUnstructuredGrid
  internals to perform efficient sequential iteration without
  vtkCellLinks.

Change-Id: I5893dab945115721d2291b2eff83bf7e71632230
Merge topic 'cell-iterators' into master

6c430b58 Add vtkCellIterator for traversing cells in data sets.
2b619db2 Add setters for vtkGenericCell's points/point-ids.
3a1224b3 Add vtkAbstractTypeMacro for abstract vtkObject subclasses.
Merge topic 'deep-copy-memory-reuse' into master

17f954f6 Reuse memory in DeepCopy implementations.