[WIP] Extend #357

This PR is based on @MattKetmo's work. His initial idea was a sort of eye-opener to me, hence this PR.

 I removed useless methods in the `AbstractProvider`. I believe we could have a `AbstractLocaleAwareProvider` too. <strike>The `LocaleAwareProvider` interface does not make much sense at this point, I'd drop it.</strike>

The `ProviderBasedGeocoder` should be an aggregator or proxy.

The codebase is getting more and more readable and clean.

Edit: I chose to keep the `LocaleAwareProvider` interface as it is a pretty common use case.