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
We need it regardless. Even if `$modified` is `true` we need to get the latest copy. The `$subModified` is actually what allows us to avoid re-serializing in _some_ cases.