Encapsulate BSSID, SSID, and location sanity checks in blocklists

These classes do not implement lists, but conceptually they act like blocklists.

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).

If our server algorithms uses the grid method instead of trilateration, we might want to unblock ad-hoc BSSIDs because multiple mobile APs don't hurt our positioning; in fact, more measurements may be better.

The SSID blocklist just checks for `_nomap` and empty strings. I have 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 use the grid method, then mobile APs don't hurt our position estimates. Unfortunately, our server can't make these distinctions if it only knows about SHA1 fingerprints instead of actual SSIDs.

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.