Adding InterpolateLine() function

This linearly interpolated two values based on the weights provided.
Moving InterpolateLine into Interpolate.h

- Delete InterpolateLine.cxx
- Change corresponding header to Interpolate.h
Adding Lerp() to dax::math
Adding Unit test for dax::math::Lerp()
Make InterpolateLine() use dax::math::Lerp()
Merge branch 'InterpolateLine'
Implementing ArrayPortalPermutation with regular array for Key and Value

- This is a first pass on this array portals and basically uses array.
- Also convenience we are using Implicit arrays (this needs to change).
- ArrayPortalPermutation needs to take in two ArrayPortals instead of arrays.
- Unit test is added as well.

WIP: Trying to make permutation with implicit array

Simplifying ArrayContainerControlPermutation.

This is based on the implicit array. The container comprises of two arrays one
with the Key and other with the Value. The Key holds the index into Value array
and the corresponding value. So for example if the Key array = [0,2,3,5] Value
array = [8,6,4,9,8,3]. The array[2] = Value[Key[2]] = [3] = 9.

NOTE: This is only a first working implementation and more fixes may be needed

Extending test with different sizez for Key and Value arrays.

Key/Value arrays were the same in the previous test. This test is a little
better and test if the Permutation work for arrays of different sizes.

Changing API and adding assers for ArrayContainerControlPermutation

- We now need to specify both the key and value data array sizes.
- The tests are chaned accordingly
- A dax assert checks if the index in the key is relevant at construction time

WIP: Testing another permutation container option
Making ArrayPortalPermutation use portals for Key and Value

The following are the changes in this commit

- Out previous implementation used Implicit array and now they are separate and
  have their own tag.
- TAG: ArrayContainerControlTagPermutation
- Also changing the documentation to reflect thiese changes.
- Removing the check to see Key array is valid. This would cause slow down
Fixing spelling mistake Permutation1-> Permutation
Adding means to set values to Permutation Array + Unit Test.
Merge branch 'ScheduleMapAdapter-to-PermutationContainer'
Marching cube lookup tables now use less memory and use dax voxel ordering.

The ordering of the edges in the lookup tables was incorrect for dax. We
have also moved to using unsigned characters as the type of the types
to reduce the memory overhead by an order of 4.
linear interpolation implementation is now correct.
marching cubes now properly compares field values against the iso value
Correct incorrect marching cubes generate algorithm.

We incorrect computed the location in the lookup table to find the edges
that created each coordinate of the output triangle. We also update
the code to use the new unsigned char lookup tables.
Merge branch 'InterpolateLine' into marching_cubes_segfault
Update marching cubes to use math library for interpolation.
Merge branch 'marching_cubes_segfault'
Implement Extent calls that use less temporary memory.

In an attempt to improve the performance of using uniform grids, I have found
that significant amount of time is spent creating temporary objects while
computing extent information.
Reduce memory and computation in implicit point coordinate portal.