Remove init argument from reduce()

This removes the init argument from reduce. This simplifies the
implementation and avoids copying a value from the host to the
device on every call to reduce.

If an initial value is required, the accumulate function can be
called instead.
Add reduce() overload without function argument

This adds adds an overload of the reduce() function which
uses plus<T>() as the reductor. This simplifies the common
case of calculating the sum for a range of values.
Add merge() overload with custom compare function

This adds a merge() function overload which uses a custom compare
function instead of the default less<T>() to compare the values.
Add merge_floats test

This adds a test case for merge() with float's.
Use BOOST_COMPUTE_FUNCTION() macro in tests

This replaces the usages of make_function_from_source() with
the BOOST_COMPUTE_FUNCTION() macro.