Refactor Report class, move processing of ETags to NotebookSyncAgent

Moving processETags into NotebookSyncAgent improves the separation between networking code and the synchronization algorithm. Moreover, this allows the reuse Report for additional REPORT requests. 

Additionally, this commit moves code shared by the getAllEvents, getAllETags and multiGetEvents methods to sendCalendarQuery and sendRequest.

This pull request contains some of my work on improving support for synchronization with Owncloud. While not really necessary (it would suffice for me to make multiGetEvents public to be able to send an additional request), I believe the refactoring makes the code clearer and easier to understand. (It would also be convenient for me to have this in master as I would have to rework my fixes otherwise ..)

I have changed the signature of receivedCalenderResources to `QHash<QString, Reader::CalendarResource>` which is what processETags uses. (The keys in the hash are the uids of the corresponding incidences.)