Integrating changes from gpu.branch for subsets

In the `gpu.optmatch` branch, Josh checked in two changesets that
included both some experimental GPU related computations and also a C
implementation of the `subset` function for `InfinitySparseMatrix`
objects.

This commit just includes the ISM related changes and make that function
the default way to get subsets from ISMs.