Use GSL combinations function

There was a bug in combinations, which I've fixed by using the GSL.
This pulls in a dependency on the GSL, but it's a fairly common library
to have in HPC/bioinformatics situations so I guess that's OK. Will
update docs later