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.
Can you use the Sphinx syntax for documentation? So it's:

```
:param elts: A list of elements to cluser.
...
:returns: List of lists of elements, ...
```
And than add a `.. autofunction::` line into the right place in a rst in `docs/internal_api/`. I've added the basic setup earlier this week, so you get docs like http://mozilla-ichnaea.readthedocs.org/en/latest/internal_api/service/locate.html