Implement and test lower-level geocoding api. Fixes #220