Add vtkMappedDataArray.

vtkMappedDataArray is a superclass for vtkDataArrays that do not use
the standard memory layout, and will allow VTK to interface with
simulation codes for in-situ analysis without repacking simulation data.

vtkMappedDataArrayNewInstanceMacro is used by subclasses to implement
NewInstanceInternal such that a non-mapped vtkDataArray is returned by
NewInstance(). This prevents the mapped array type from propogating
through the pipeline.

Change-Id: I619b3bd5ab4325980eddbc7b290352490713d60c
Add abstract vtkUnstructuredGridBase interface.

This class provides some additional cell API on top of
vtkPointSet, but does not contain the implementation-specific
public methods in vtkUnstructuredGrid. Similar to
vtkMappedDataArray, this interface is used to map native
simulation data structures into an interface that VTK
understands.

Change-Id: Ifdc21b3d704854bfd53a198d3d3d0f7415577479
Add a vtkMappedUnstructuredGrid templated wrapper class.

Change-Id: I046d14b271d9d9693c9caa4b9b86836f85120c0c
Add vtkAbstractArray::HasStandardMemoryLayout() virtual.

This can be used to quickly check if an array uses a
non-standard memory layout.

Change-Id: I17d3a8cd9e3c7c10d768fea31370ae65510e6292
Fix handling of mapped data arrays in vtkDataArray.

Changes to vtkDataArray implementation for compatibility with
vtkMappedDataArray. If regular data arrays are used, fast
data iteration via scalar pointers is preserved. If mapped
data arrays are used, vtkTypedDataArrayIterators are used.

Some performance optimizations were made along the way, and
benchmarks added to TestDataArray. The results of the benchmarks
before/after the changes are:

Test                               | Before (s) | After (s) | Speedup
-----------------------------------+------------+-----------+---------
deep copy 10M double --> double:   | 0.0180356  | 0.0179345 |  00.56%
deep copy 10M double --> int:      | 0.0193923  | 0.0108546 |  44.03%
deep copy 10M int --> double:      | 0.0197700  | 0.0125094 |  36.73%
deep copy 10M int --> int:         | 0.0096185  | 0.0088052 |  08.46%
get tuples random access (double): | 0.0111670  | 0.0074788 |  33.03%
get tuples random access (int):    | 0.0106015  | 0.0072431 |  31.68%
insert next tuple (double):        | 0.1429880  | 0.0932984 |  34.75%
insert next tuple (int):           | 0.1445310  | 0.0891607 |  38.31%
insert tuple (double):             | 0.0601416  | 0.0664084 | -10.42%
insert tuple (int):                | 0.0558483  | 0.0630196 | -12.84%
interpolate 2 arrays (double):     | 0.0108466  | 0.0028245 |  73.96%
interpolate 2 arrays (int):        | 0.0114603  | 0.0028706 |  74.95%
interpolate 6 tuples (double):     | 0.0087588  | 0.0055686 |  36.42%
interpolate 6 tuples (int):        | 0.0133066  | 0.0092156 |  30.74%

The insert tuple operation used to just call memcpy, but now it has to
perform some additional type checking, hence the slowdown.

Change-Id: I1d45f2b998d74257a4e1d917e8b01b60fa6ef4e1
Modify vtkContourFilter to work with mapped data.

Change-Id: I5058001fe4c41d8d5d034310daf5bedca54a082e
Make surface extraction work with mapped structures.

Change-Id: I28f0fd72d45b1913d83676256f3725cbac9db482
Make slicing work with mapped data.

Change-Id: Ia7413db875a103eadb0c72185b722762c45469be
Make warping by vector work with mapped structures.

Change-Id: I02be7e6c1b9102a574c27a1a0a85543f47e68de6
Adapt volume mappers to operate on the UnstructuredGridBase interface.

Change-Id: Iffef1d59a1497684c864eef192273cae36b1364c
Update XML writers to support vtkMappedUnstructuredGrid.

Also, use vtkTypeTemplate in vtkArrayIteratorTemplate to allow
safe down-casting.

Change-Id: I352491a52df8320c711f112feb911c91c5e77e11
Expose the vtkExodusIIReaderPrivate::SqueezePoints variable.

We need to pass the full node data into the reader's output
to do a comparison with the in-situ reader. The SqueezePoints
variable controls whether or not to prune points that don't
belong in a given element block.

This patch simply adds methods to vtkExodusIIReader that
set/query the private class's SqueezePoints variable.

Change-Id: If6ceaa11939abfd731c4c172bf305b74f5c3878d
Add in-situ exodus II node/element structures and test.

Change-Id: Id04f144757cdf0d05e21f5276c3a14362c606235
Merge topic 'insitu' into master

f12c292d Add in-situ exodus II node/element structures and test.
88af65b3 Expose the vtkExodusIIReaderPrivate::SqueezePoints variable.
d5490522 Update XML writers to support vtkMappedUnstructuredGrid.
47aaa1d7 Adapt volume mappers to operate on the UnstructuredGridBase interface.
fab68b54 Make warping by vector work with mapped structures.
17182fe8 Make slicing work with mapped data.
e7e4c21f Make surface extraction work with mapped structures.
5ca7a26e Modify vtkContourFilter to work with mapped data.
b037ed03 Fix handling of mapped data arrays in vtkDataArray.
5ebbdd2b Add vtkAbstractArray::HasStandardMemoryLayout() virtual.
8c33da4f Add a vtkMappedUnstructuredGrid templated wrapper class.
71b3c31e Add abstract vtkUnstructuredGridBase interface.
5f23efa7 Add vtkMappedDataArray.