Let `insert_wifi_measures` work on measures from 5 WiFi networks at a time.

This helps in avoiding per-task overhead for the very many unique WiFi
networks we get in each batch upload. We don't process all of the measures
at once to avoid concurrent updates to the same rows in the WiFi table.
This happens as we often get multiple batches from the same user in short
order and these are processed in parallel by different async workers.
Change `search_*` functions to work on pre-validated data.
Factor out query cell/lac code from `search_cell*` functions.
Combine the actual DB query for cell and lac during searches into one.