Changed undefined macros to something other than zero.

Previously, VTKM_DEVICE_ADAPTER_UNDEFINED and
VTKM_ARRAY_CONTAINER_CONTROL_UNDEFINED were set to 0. The problem is
that if someone set VTKM_DEVICE_ADAPTER or VTKM_ARRAY_CONTAINER_CONTROL
to something invalid, that would test positive when compared to 0. Thus,
you get an error about not defining the default when in fact the problem
is setting an invalid flag.

This change makes the undefined constants -1 so that the comparison will
fail unless the macro is actually properly set.
Merge branch 'undefined-flags'
Add CMake configuration for execution environment code
Add test for ErrorMessageBuffer
Add a FunctorBase class for scheduling non-worklets

Whenever creating a functor to be launched in the execution environment
using the device adapter Schedule algorithm, you had to also create a
couple of methods to handle error message buffers. For convenience, lots
of code started to just inherit from WorkletBase. Although this worked,
it was a misnomer (and might cause problems in the future if worklets
later require different things from its base). To get around this
problem, add a FunctorBase class that is intended to be used as the
superclass to functors called with Schedule.
Merge branch 'exec-cmake'
Add Timer class.

Helpful for safely timing parallel code across different devices.
Merge branch 'timer'
Remove alignment attribute from Extent struct.

See commit 763949351f8aec10896f7edf62839f261a25e2fd for an explanation on
why we are no longer using alignment attributes.
Include correct files for timing on windows.
Add special types for Tuples of size 0 and 1.

Mostly this is was motivated by the windows compiler complaining about a
zero-length array in Tuple<T,0>.
Fix MSVC compiler warnings.

Most of the warnings were about losing precision in conversions.
Merge branch 'windows-fixes'
Make sure all header wrapper macros start with vtk_m_ rather than vtkm_

We made this change a while ago to help with completion in IDEs.
(Completion was matching a bunch of wrapper macros that were almost
never used anywhere.) Most of the changes are in comments, but there are
a few bad macro definitions.
Fix testing versions.

There is a special version of the testing methods for use in the control
environment that handles execeptions that can be thrown there. There are
tests to make sure you are using the correct version of the testing
framework, but it was broken until the last commit. Now that it's fixed,
here are two places where the wrong testing method was used.
Merge branch 'correct-header-wrappers'
Remove CopyInto method from array-support classes

It was originally put there to support CopyInto in ArrayHandle, but that
has already been removed. It really only makes sense for trivial
examples and testing code, and it sometimes causes complications with
coding.
Merge branch 'remove-copy-into'