libedata-cal/book: Replace GSimpleAsyncResult with GTask
First move implementation-specific functions to a private header
Then replace GSimpleAsyncResult with GTask, also take the opportunity to move the nested GQueues into proper QueueTuple type. Makes it easier to understand the lifetime of all the results.