implement fast distance calculations with NumPy/SciPy

This rewrites most of neighbour.py to use the fastest routines I could
figure out. See this stackoverflow for details:

http://stackoverflow.com/a/20319282/1084470

It also requires a slight rewrite to the relaxed clustering algorithm.

Benefits:

1. All distance calculations are done in SciPy
2. I never create a list of all subset pairs. This is important,
because that list could be enormous.
Merge branch 'feature/fast-distances' into develop