Sparse Distance Matrix Construction

Initial construction of the distance matrix is now
sparse.  This should solve the memory/segfault issue
with scaling above ~10K data points, however the code
needs testing.  The outer loop involves passing a lambda,
so more work appears to have been shifted to the python
interpreter.  This may need rewriting to keep more
of the distance matrix calculation in C if the current
code doesn't efficiently scale to at least 100K data
points.