added geocode provider class

- only does reverse geocodes at the moment…
- refactoring to support changes to data model responsibilities.