fix: use CalendarService signals for async event loading
The plugin was stuck loading because loadEvents() called
updateEventsFromService() synchronously before CalendarService
had fetched EDS data. Now Main.qml listens to onEventsChanged,
onLoadingChanged, and onAvailableChanged signals to process
events when they actually arrive. Added 15s safety timeout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>