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.
Workaround for g++ v4.6 ICE
Merge pull request #122 from ddemidov/scan_by_key

Implemented scan_by_key algorithm