Makes recurring events work

Recurring events all have the same UID. Instead of assuming it is
unique, this checks the last modified date *and* UID to determine if
existing shifts need to be replaced.