COMP: LastRange is not a member of vtkTextureTable
Remove constructor argument from array classes.

This is not used anymore, and is causing issues with
vtkTypeTemplate.

Also cleaned up some constructors to avoid re-initializing
members from base classes and ensure that all members are
initialized.

Change-Id: I103365211ce8289c2f5a5fdb05ccb5126a8fc0e0
change MAX_DISCRETE_VALUES into an ivar

Change MAX_DISCRETE_VALUES from a hardcoded value of 32 to a user-
settable ivar.  This allows users of vtkAbstractArray to generate
a categorical color map for data sets containing more than 32
discrete values.

For backwards compatibility, we keep the MAX_DISCRETE_VALUES enum
and use it to initialize MaxDiscreteValues.  This enum is marked
as deprecated.

Change-Id: I83bf7c598288dc28a4ad231778c66e1571e3a461
Add FastDownCast method to vtkDataArray, vtkDataArrayTemplate.

The vtkDataArray API has several functions that take
vtkAbstractArrays as arguments, SafeDownCast them, and do
work with them. Several of these functions are often called
from tight loops in filters, causing the update to spend more
time doing strcmp trying to downcast the arrays than actually
crunching numbers.

The FastDownCast method takes a vtkAbstractArray, check an enum
value indicating the subclass, and static cast the result. Using
this downcast method in tight loop improves the filter
performance considerably.

Change-Id: Ibb23d10f3f265a4ac6bac21646c9c6f98854edc2
Add asserts to vtkDataArrayTemplate Set/GetValue()

This adds asserts which will trigger when invalid indices are
pass to the GetValue() and SetValue() methods in the
vtkDataArrayTemplate class. This causes tests which access invalid
elements of a vtkDataArray to fail with an assert. Previously these
types of errors would only be found by valgrind.

Change-Id: I0bfc7de1453c871b55cfe87fba43f9095684fbee
Add a vtkTypedDataArray class and iterator.

The templated vtkTypedDataArray provides an abstract interface to data
arrays with a known data type. This will be used to interact with data
arrays that are not subclasses of vtkDataArrayTemplate, but may be mapped
onto a non-standard memory layout for in-situ processing.

The vtkTypedDataArrayIterator uses the vtkTypedDataArray API to provide
generic random or sequential access into an array without using the void
pointer API.

An Iterator typedef along with Begin() and End() methods are added to both
vtkTypedDataArray and vtkDataArrayTemplate. The former uses
vtkTypeDataArrayIterators for safety, while the latter uses scalar pointers
for speed.

A vtkDataArrayIteratorMacro is added to provide a safe alternative to
vtkTemplateMacro when a non-standard vtkDataArray may be used.

Change-Id: I37c39af140733e5b715c42ab80153257d69a4d44
Allow batch copying of data set attributes.

This allows filters to copy many tuples at once, reducing the
overhead of copying many points.

Change-Id: I29089d761697fe110b85820254fceb0d2d7b1121
Add missing GetArrayType virtual implementation.

Also add docs and virtual keywords to the other virtuals.

Change-Id: I8cb0c39aa4bbbf269a28f885866605180a671a11