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
Fix sign comparison warnings in tests
Add test for generate() with pair<T1, T2>
Rename lambda result test functions to check_lambda_result()
Make function_signature_to_mpl_vector<> meta-function variadic
Make lambda get<N>() variadic
Make lambda function expressions variadic
Add third lambda placeholder
Add make_pair() lambda function
Add make_tuple() lambda function
Add Boost version check to config.hpp

This adds a compile-time check to config.hpp which ensures
that the miniumum supported Boost version (1.48) is found.
Add batched_determinant example