WL-3170 Generate calendars robustly

We were finding calendars weren't being created in some cases. This adds tests for some of the special conditions introduced by the use of the iCal methods `REQUEST` and `CANCEL`.

In particular for a `REQUEST`, attendees must be defined and generating an attendee without an email address has been triguring malformed URI exceptions.

For a `CANCEL` type calendar, every event is required to have a `SEQUENCE` property defined. This makes sure that when we cancel an event, we introduce one if it is not already set.