PyCUDA support for collapseIntervals

Adds optional support for accelerated collapseIntervals by offloading the task onto the GPU. If the proper libraries are not installed, transparently falls back on existing functionality.

Note that it only works with integers, and uses memory proportional to the distance between the minimum and maximum values encountered in a set of intervals to be collapsed. This is a limitation of the specific algorithm chosen.