Reimplemented the event watch callback to remove and readd event instead...

... of rebuilding the whole calendar.

This should fix issue #469 without breaking any of the previously implemented behaviours.

The existing tests seem to pass, and I think they will suffice without the need to create some specific ones for this new implementation.