Encapsulate BSSID, SSID, and location sanity checks in blocklists

These classes do not implement lists, but conceptually they act like block lists.

If we want to get fancy, we could block BSSIDs that don't have valid manufacturer OUIs. Wireshark maintains a list of known OUIs: http://anonsvn.wireshark.org/wireshark/trunk/manuf . However, I don't think we should care as long as the BSSIDs are still unique (unlike `00:00:00:00:00:00`, which I have seen multiple times in my own stumbling).

The SSID blocklist checks for `_nomap` and a list of some common SSIDs for mobile devices (`AndroidTether` and `iPhone`), hotspots (`MiFi` and `MacBook`), and shuttles (`GBusWifi` and `ac_transit_wifi_bus`) we could block. If our server algorithms uses trilateration, then we probably want to block mobile APs. If our server algorithms uses the grid method instead of trilateration, we probably *want to unblock* mobile APs and ad-hoc BSSIDs because duplicate measurements of the same device in multiple locations doesn't hurt. Unfortunately, our server can't make these distinctions if it only knows about SHA1 fingerprints instead of actual SSIDs. I think our early stumbling filters should be conservative because it's easier to remove these restrictions later than to clean up a polluted database later.

The values I chose for the location sanity checks are pretty arbitrary. I figured we could tighten the limits later. I have seen some Android devices, like the Galaxy Nexus, that report valid latitude and longitude with bogus negative altitudes. So we might want to be relax altitude sanity checks. The iPhone GPS seems to clamp negative altitudes at 0.