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, code shared by the getAllEvents, getAllETags and
multiGetEvents is moved to sendCalendarQuery and sendRequest.