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()
Add fizz_buzz example
Change count_if() to use reduce()
Improve documentation
Reorganize tests for issues/bugs
Simplify function/closure macro implementations
Fix unused parameter warnings
Add random_walk example
Add k_means example
Add define() method to function<> and closure<>
Change mersenne_twister_engine::generate() to use temporary storage
Change uniform_real_distribution to use BOOST_COMPUTE_FUNCTION()