Fix unused parameter warning in reduce_on_gpu.hpp
Include <boost/mpl/size.hpp> in function.hpp
Change program::build() to return void
Add user_event class
Refactor recurring code into preprocessor

Makes it easy to add specialisations
Fix unused variable warning in test_user_event.cpp
Change perf_sort_by_key to use int_ and long_ instead of int and long
Merge pull request #90 from roshanr95/perf_sort_by_key

Fix errors in perf_sort_by_key
Build benchmarks on Travis-CI
Support generic function callbacks for event
Add event::duration() method
Rename K to K_BITS in radix_sort()

This should fix the following error seen on the Apple OpenCL
implementation when compiling the radix_sort program: "error:
definition of macro 'K' conflicts with an identifier used in
the precompiled header".
Add unique_copy, modify unique to use it
Add tests and benchmarks for unique_copy
Merge pull request #97 from roshanr95/unique

Fix errors in unique
Change BOOST_COMPUTE_FUNCTION() to use custom argument names

This changes the BOOST_COMPUTE_FUNCTION() macro (and the related
BOOST_COMPUTE_CLOSURE() macro) to use custom, user-provided argument
names instead of auto-generating them based on their index.

This is an API-breaking change. Users should now provide argument
names when using the BOOST_COMPUTE_FUNCTION() macro. The examples
and documentation have been updated to reflect the new API.
Remove unnecessary typename in function.hpp and closure.hpp

This fixes a warning when compiling these files with clang.
Fix BOOST_COMPUTE_FUNCTION() usage in struct.hpp documentation
Fix BOOST_COMPUTE_FUNCTION() usage in perf_cart_to_polar
Only allocate temporary vector if necessary in generic_reduce()