Add support for global and recurring calendar events

Couple of small tweaks to remove some of the `ifs`.

> For recurring events, the `"frequency"` value may be `"daily"`, `"weekly"`, `"monthly"`, or `"yearly"`. The `"count"` value describes how many times the event repeats. The `"until"` value is the date of the last time the event recurs. If `"count"` and `"until"` are both `null` for an event, it recurs infinitely. The `"excluding"` value identifies which recurrences, indexed from 1, are skipped.