Turbo-boosted

Rewrote to use numpy arrays and made the shuffling algorithm more
efficient. This version is approximately twice as fast as the previous
one. Removed the option to input a distance matrix – now only takes
lists of pairwise distances, since this option was unlikely to be
useful in most cases. Added ValidateInput() function, which returns
error messages if there are any obvious errors in the input arguments.