Make zip_iterator take more than three elements

This uses Boost.Preprocessor macros to allow zip iterators to work with
arbitrary number of elements (the current limit is maximum boost::tuple
size which is 10 by default).

Refs #50
Merge pull request #51 from ddemidov/roomy_zip_iterator

Make zip_iterator take more than three elements
Move BOOST_COMPUTE_MAX_ARITY definition to compute/config.hpp
Merge pull request #52 from ddemidov/max_arity_to_config

Move BOOST_COMPUTE_MAX_ARITY definition to compute/config.hpp
Fix extra semicolon warning in interop/eigen/core.hpp
Add link to examples directory in README
Improve accumulate() performance

This improves the performance for the accumulate() algorithm
for types/operations that can be performed with reduce().
Add support for host iterators to sort()
Refactor function handling in lambda expressions