Split MainActivity into Scanner and Reporter
Encapsulate BSSID sanity checks in BSSIDBlockList
Canonicalize BSSIDs
Optimize unnecessarily clever ad-hoc BSSID check
Encapsulate location sanity checks in LocationBlockList
Encapsulate SSID sanity checks in SSIDBlockList
Add SSID prefix and suffix lists to block list
Add error and debug logging
Unregister phone state listener when not scanning
Extract hashScanResult() method, remove UnsupportedEncodingException, and preallocate StringBuilder