Support for using geoip data to restrict circuits
Some users want to be able to say things like "Never give me a guard from the US" or "make sure this circuit exits from Germany". C Tor supports this feature that by shipping with an occasionally updated geoip file, derived from libloc's data. We should do something similar in Arti, assuming that users want it.
We should make sure that whatever API we use is something that other apps can use too, so that we don't need to carry two distinct copies of the geoip database.
NOTE that off-the-shelf Geoip solutions won't work, for several reasons:
- We need our lookups to be based on a local database, so as not to expose our queries
- We need a very small database, to minimize download size.
- We do not want a database that is frequently updated, to minimize download size, and avoid fragmentation.
- We need to avoid different users having different views of the network.