Chronus: Optimize widget loading/display

Completely refactors the Calendar handling and changes the refresh
interval from every minute to the minimum of either the next weather
refresh or the next event start/end.

It also now detects more events (new calendar entry, deleted calendar
entry, location change, timezone change etc)

Patch set 7 : Change the startup of the provider to only update the
              required panels on enabling the appwigdet and updates
              This further reduces the number of times the widget
              refreshes itself, now limited only to actual events
Patch set 8 : Change the weather refresh time to be absolute, not
              relative to current time
Patch set 9 : Refactor the calendar to use a CalendarInfo class that
              maintains a static list of events.  This allows the
              refreshing of the lock screen widget without querying
              the calendar provider every time the screen turns on
Patch set 10: Simplified onReceive loading/updating of widget with
              additional tweaks to handling deleted widgets and
              a fix to the refresh timer calculations including a
              check of the lookahead window.
Patch set 11: Change the alarmservice to wake the CPU and do the
              update if the device is sleeping.  This way, since the
              updates are so infrequent now, it makes sense to ensure
              things are updated (if needed) when the user turns the
              screen on after a while.
Patch set 12: Change application ID to an ID registered for Chronus
Patch set 13: Store the returned WOEID in sharedPreferences it if its
              valid and retrieve the previously stored one if not. This
              allows for the querying of weather data even though the
              Yahoo Placefinder service API limit has been exceeded and
              it returns an invalid XML result on geocode query.
Patch set 14: Add a flag to determine when we want the real placefinder
              result or the cached result is also OK
Patch set 15: Final comments and code formatting cleanup
Patch set 16: Factor out weather fetching to separate service to
              decouple weather fetching from widget update. Also
              optimize a lot of code.
Patch set 17: Fix alarms refresh and optimize calendar query and weather
              refresh behaviour.
Change-Id: I0496dad356c92fb26ad7289268327b27b365b6cd