Add a ParameterPack class to manage variable function arguments.

The new class dax::internal::ParameterPack is somewhate like boost::tuple
in that it has variable template arguments and holds an instance of each
of these types. However, this class is specifically meant to be used to
hold arguments to a function of unknown parameters. In addition to holding
the parameters, it allows you to modify the arguments (to modify the
behavior of the function) and to invoke an actual functor using the
arguments held in the class.

The main use case for this class is to simplify the implementation of the
Invoke method in the schedulars and remove the use of variable template
arguments elsewhere in Dax. It is also a convienent class to manage
signatures of real functions.
Add a quick and dirty reference guide to using ParameterPack.h

The only way to understand how to use ParameterPack previously was to look
at the UnitTestParamterPack, now you can quickly read the start of the file
to see what method ParameterPack has.
Change the ParameterPackImpl template arguments to signature

Rather than have ParameterPackImpl template parameters of Car and Cdr,
which results in types that look like ParameterPackImpl<Type1,
ParameterPackImpl<Type2, ParameterPackImpl<Type3, ... > > >

This change gives ParameterPackImpl a single template parameter that is
a function signature. Now, errors should look like
ParameterPackImpl<void(Type1,Type2,Type3,...)>, which should be much
easier to read.
Update MapReduce classes to use ParameterPack.
Correct building vtk timing benchmarks to link against tbb.
Correct runtime issues caused by the merging of parameter pack.