Restrict number of custom function arguments
Move reduce_by_key kernels into detail::rbk namespace
No need to call get_local_size() if block size is template parameter
Implemented scan_by_key algorithms

The algorithms is adopted from AMD Bolt code, which has
Apache 2.0 license.