Improve the performance of vtkDataArray::ComputeScalarRange.

Change-Id: I39b78cb5fa4f48ae296d343bab0cf41d63327f92
Improve the performance of vtkDataArray::ComputeVectorRange.

Change-Id: I62180c69f886253762e960c89daca9bdac09a2a9
Move all free functions in vtkDataArray into an anonymous namespace.

Change-Id: I2c367230cbeada8bee88d66a844e3d52722d4506
Update ComputeVectorRange based on gerrit feedback.

Change-Id: Ic3359a468a3d2cd43e99afe7de7caa25a6aeac58
Update DataArray and DataArrayTemplate to use vtkTypeTraits.

Change-Id: Iedc82b6cace892fa949f77d68a76d1aab8493e35
Correct ComputeScalarRange when dealing with multiple components.

Change-Id: I4e441300a189d9f0c7f41c26378b8c05429d54b1
Improve ComputeScalarRange when we have a single component.

The previous implementation made it really hard for compilers to optimize,
and notice it could use intrinsic operation for single component arrays.

In testing this takes the ComputeScalarRange on 600^3 from ~430 ms to ~20ms.

Change-Id: I778cd34adc8689279f4f9ec64d72598b1241f7c7
Refactored how pieces and extents are handled.

Refactoring the way VTK goes between piece and structured
extents. Before, extent translators were used when the pipeline
moved from structured to unstructured data converting piece
request to extent request. This caused many problems with filters
that altered extents, mainly a lot of redundant IO due to
repartitioning of different extents. This became extremely
cumbersome to manage when running distributed. The new behavior
pushes the extent translation all to way to the readers and
only when readers are able to read a subset. This works much
better. The only downside is that filters need to be able to
handle data extents different than update extents. Most filters
can do this but many imaging filters cannot. Those that are
needed in parallel will have to be updated.

As part of this work, I also removed MAXIMUM_NUMBER_OF_PIECES
and added CAN_HANDLE_PIECE_REQUEST. MAXIMUM_NUMBER_OF_PIECES had
reduced to being a boolean. 1 for serial sources, -1 for parallel
sources. I removed it and added a CAN_HANDLE_PIECE_REQUEST instead.
This key, produced by a source, tells the executive that a source is
able to handle piece request. It is a source only key produced in
RequestInformation and is not propagated downstream. If this key is
not present, the executive will only execute the source for piece 0
to produce the entire data. It is then up to the user to add a filter
that splits the data for other piece requests. The only exception to
this is when CAN_PRODUCE_SUB_EXTENT is present, in which case the
executive will split using an extent translator AT THE source - not
downstream.

Conflicts:
	Filters/FlowPaths/vtkParticleTracerBase.cxx

Change-Id: I8db4040289ff87331adeecded4a738313d9b52df
Update the XML readers and writers to work with pipeline changes.

The XML readers and writers, both parallel and serial, now work
with the pipeline changes. Now, all writers work with pieces
even though the structured ones can handle asking for a sub-
extent.

Change-Id: I9f757ba12a3b9fb84e141506dacadad608eb8b99
Cleaned up and fixed transmit filters for structured data.

Change-Id: I7e5c55259159752882c8ae056e08f9bec12b3c02
Fixed bug in send structured data.

The origin was not offset properly in cases where extent
had to be adjusted. This is all due to the fact that the
legacy writer always writes extents starting at 0.

Change-Id: Id37f21d7c99d2ecdf6285d2870bf87e10b534a7a
Fixed legacy parallel reader and writer.

To work with the new pipeline changes.

Change-Id: Ic5c8ac86026999f79924d8e61b10fbcb18286bb8
BUG: Was using array of wrong size.

Was trying to read the extent into an array of size 3 instead
of 6. Doh!

Change-Id: Ic8bb2872782c86739ddf8119b3d44edb35e42e06
Fixed compiler warnings.

Change-Id: I80d4dbda38c7a6d83d6ba3fadeb81cce1154a1b1
Changed synchronized templates class for new pipeline behavior.

Note that this change slightly breaks backward compatibility.
The filter now processes all points even if they are on a ghost
region. This means that this filter will produce ghost polygons
that need to be stripped downstream. This is in line with the
"filters should work with what they have" attitude the new
changes enforce. This makes pipeline and filter logic much
simpler.

Change-Id: I77738480eaf716ec74095f9573c0cfc403769037
Removed unused keys.

Change-Id: I24bf3b0959bf6e22543bb526b26d9fda14ab4c20
Updated filters and sources to work with new pipeline logic.

Change-Id: Id76d3bc545a64675a0820cb1d9b45c61a51efc6a
Moved key.

It made more sense to have both CAN_PRODUCE_SUB_EXTENT and
CAN_HANDLE_PIECE_REQUEST in vtkAlgorithm.

Change-Id: Ie64bb3e7c8417113bfb7f677c10d8feb5fdddc39
Cleaned up extent translators.

- Removed unused extent translator subclasses
- Removed unnecessary refereces to the extent translator
- Moved extent translator into Common/ExecutionModel

Change-Id: Idc53dd66891297b1f6a06ea3eb1baf394cb24b20
Removed unnecessary reference to extent translator

Change-Id: I74925cc4dbba114bebd3ae90268c193a048c6e33