Add in todo to keep track of my tasks.
Switched over to use boost tuple.
Attempt to use try_compile to detect variadic template and tuple support.
Use the configured utility_tuple header so we use best tuple version.

Instead of always using boost::tuple we are now moving to use the
tuple class that is best suited for the compiler.
Update the todo.

After reading more about boost::fusion, I am wondering if the majority
of this work is really just redoing code that exists in boost::fusion.
Switching to fusion should be looked at.
properly check if boost compiler flag is set.
Properly define the variable to see if we have variadic support.

Also store the result of each try_compile so it is easier to debug in the future.
Update variadic c0x code to compile with gcc pre 4.6

Gcc pre 4.6 requires workarounds to get certain template expansion
expression to work correctly. I wonder If I will need to ifdef all
these use cases inside the code to make it nicer to read.
Update the C11 try compile code to actually compile.
Adding more thoughts on using boost fusion to reduce code.

Getting the proper ref/cref support added to methods might be challenge.
Instead we should look at fusion as a drop in replacement for hand rolled
methods.

Fusion already supports nvcc, so it might be feasible that we only have 1
or 2 small headers that require pre-processor hell.
Correct finding utility_tuple and adding c++11/0x support.
Convert the code over to use boost fusion instead of hand rolled algorithms.

Fusion views and containers are more efficient than constructing
tuples all over the place
Trying out boost::ref to reduce copies.
We move to use fusion views to reduce number of copies of args when flattening.

We previously created 12 copies of each argument to call a function. Now
we create zero extra copies.
Update the code to use a better implementing of fusion folding.

fusion push_back creates views so we can use that and insert_range to
create a nice iteration over all the values.
Update boost required to 1.49 as 1.48 fusion has bugs on 64bit linux.
Update ParameterPacks to compile with pre gcc 4.6.

pre gcc 4.6 has some interesting bugs in parsing variadic code that
we need to work around.
Update code to compile with pre gcc 4.6.

pre gcc 4.6 has some interesting bugs in parsing variadic code that
we need to work around.
Reface the params namespace into multiple headers.

I want a better separation of functions, so that writing the pre-processor
code for the subsections is easier.
Merge branch 'pre_processor_support'