Bug #27, filter out sufficiently similar BSSIDs

This adds a filtering step to queries such that BSSIDs that are "similar enough" to each other get collapsed into clusters, and only a single element is chosen from each cluster.

Along the way I added a generic and more-robust (slower but more correct) clustering algorithm and rewrote the existing wifi-clustering operation done as part of position-estimation to use it.

A few tests which were feeding too-similar or invalid BSSIDs had to change but otherwise it seems to work.
There's only two Wifi's in the DB, so the extra four are filtered out because they aren't found. They aren't filtered out based on the "similiar bssid" check. From the test name, I'd expect this to test the "similar bssid" code.

The way this is written now, I think it tests exactly the same thing as the test above it.