Improve caching and retrying

`WeatherHelper` now knows if the `getWeather` request comes from a forced source.
If the update has been forced, the local cache is cleared. Note: the persisted cache on `SharedPreferences` doesn't
get wiped here, as it may be useful in a subsequent widget launch or after a crash; also, editing the `SharedPreferences`
may be expensive on slow devices (imagine the user tapping 10 times on refresh) and being that there's no advantage
in doing so, I did not.
The cache clearing code has now its own method, with a `persist` changes option to determine whether to edit the
`SharedPreferences` or not.