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
let me say it in other words: in case `modified` is already true, we don't need to call `->serialize()`, since we already know that modified is `true`