Add a GeoIP source
Add GClueIp class implementing an ip (AKA GeoIP) source.
Starts with several commits which refactor the web source to allow this to work and make small related (and unrelated) fixes.
The GClueIP class can contain several method (backend) implementations, only one of which can be enabled at a time in the configuration.
New methods only need to implement two functions, one to create a SoupMessage query and another to parse the response.
Currently implemented methods are ichnaea, which uses the same API and URL as the wifi source, and gmaps, which uses the initial location estimate of Google Maps.