Introducing sort_by_key algorithm

The code is adopted from NVlabs/moderngpu and works with both backends.
Only single-device contexts are supported for now.

See #83