Add Dax Module to VTK.

Dax is a header only fine grained library that aims to ease
the difficulty of writing highly parallel code.

This commits adds to VTK the ability to seamlessly call dax algorithms
as vtk fitlers. One of the primary features of this module is the
ability to use vtk allocated memory within DAX without any copies
happening.

Be warned while Dax worklets are easy to write, the code to convert
a runtime system like VTK to a compile time system like DAX can
be difficult to read.

Change-Id: I4467a708c7789bb210e5c8ce51d10dc1ffd52aec
Adding config options.

- Configures device adapters.
- The order of priority is Cuda > TBB > OpenMP > Serial.
- Currently user have no say in what to choose.

Change-Id: I3196baa16b2584bb9a451cefedbe564365b31937
Adding TestThreshold.

The test is from VTK. It uses vtkDaxThreshold instead.

Change-Id: I6cad37b9b885c98e0de1a680ac24fc6ca6863d9d
Enable Marching Cubes

Change-Id: I6733a9363675ac11f3d9ea856948ac7f152a8496
Adding TrianglesContainer

Change-Id: I795802f7d7dca231d391d4673b7957dc9680c68f
Dax can now build with any device adapter.

Had to add .cu files and compile a subset of the code with cuda
to get the cuda device adapter to work properly inside VTK.

Change-Id: I31a1423b433a73a25cb5724df0d5318696d9d2bf
Move implementation of algorithms to Impl files.

This is needed so that we can share the implementation of the algorithms
no matter what the device adapter is.

The reason to have different extensions such as .cu is a requirement
of certain device adapters and their respective compilers. ( aka cuda )

Change-Id: Ibeb422a403ab4db245f7f6938c77fc4c6fddf150
Correct classes to pass vtk header tests.

Change-Id: I24cf615f24c29de13fc18f99d22d3c80c32e568d
marching cubes now properly generates a valid polydata result

Change-Id: Ice81447f57fd654d714fc8e1def2a42a04a3132d
Update testing code to work.

Change-Id: I0ac05a8c1fda92e246ed4762e5030dc507796c08
Removing EXCLUDE_FROM_WRAPPING and EXCLUDE_FROM_WRAP_HIERARCHY

This needs to be removed to be used with ParaView.

This is perhaps because ParaView needs to wrap VTK code with
ClientServer Wrapping. Neverthless since this is similar to what the
piston accelerator does and I guess safe to do for DAX.

Change-Id: I426f3dd1074743cae76ec4c7a05710592c710f50
Allow vtkDax to produce better error messages.

Change-Id: Ib0963dae10896ed01303a2df0b83142cee6b13e0
Modify DataSetTypeToType.h so that wrap hierarchy can parse it.

Change-Id: I154365fef840322825cdea4f3c2a8fbd325e1747
Adding CMAke options to select from available DAX_BACKENDS.

Currently Dax can use four backends namely
 - CUDA
 - TBB
 - OpenMP
 - Serial

Dax may be build with only a few option. So when building with a Dax
build only options with which dax was built will be available. However
the dax acclerator in VTK cannot use all available options and should
choose only one of the availabe options.

This commit enables the user to pick from available options in the DAX
build. The default order of preference is CUDA > TBB > OpenMP > Serial.
A higher preference one is selected by default only if available.

Change-Id: I360b3d6cdeea0be93108b98d8dee01ca78425303
Dax has renamed all .worklet to .h

Change-Id: I40b287671b9318a2ab32bac189a014e28c96689e
Update the newest dax changes to MC and Threshold.

Primarily the fact that marching cubes now only outputs
a dataset as its result, marching cubes also can do
point merging, and names of the scheduler wrappers have changed.

Change-Id: Iada042427553057b4fa15722374cf0e336c7e175
Merge branch 'master' into dax-acclerator-to-vtk

Change-Id: Icd73d49c665bd545e73808cbc02d4727e3b729da
Update to the new testing data framework.

Change-Id: I86a4d1f1ccd7f19d4bace6cd17e4601d987ba17b
Update Dax accelerator to the latest Dax version.

Change-Id: I805a3c5a5eecd13f3c2eafecec1cbdef4b880944
Update testing to use the new external data infrastructure.

Change-Id: I102b6e7069563bda4e61b97b7d6164df8c33722d