Added a new calendarObjectChange event.

This event allows people to specifically hook into CalDAV operations.
It allows you to get direct access to the VObject. Before this event,
you had to use beforeWriteContent and beforeCreateFile, and you were
forced to parse the iCalendar object.

This also makes scheduling a bit faster, because we only have to parse
the iCalendar/jCal object once.

Feature request by @kewisch
maybe move this into the expression on the next line, so serialization will only take place when `$modified` is `false`