Add meta_kernel::inject_type<Type>() method

This adds a new method which allows for type definitions and
type pragmas to be added to a meta_kernel.

This provides a more generic and general interface and replaces
the previously used add_pair_type() method along with the special
case handling of half and double types.
Add support for boost::tuple<>

This adds support for using boost::tuple<> types with the
Boost.Compute containers and algorithms.
Add zip_iterator class

This adds a zip_iterator class which allows for one or more
iterators to be combined into a single iterator object.