LPS-49395 continue when element has no attributes

The diffs may contain comments, for which `element.getAttributes()` will
return `null` instead of an empty attribute collection.
LPS-49337 Using correct time zone for rendering rules
LPS-49337 Automatic SF
sync-engine-shared - Change file paths for children as well
sync-engine-shared - Check on create events only
sync-engine-shared - Reuse and make public
sync-engine-shared - Watcher holds a handle on folder for < 100 ms. Generally this isn't a problem but in a case on Windows, deleting a folder and it's empty subfolder will cause a DirectoryNotEmptyException on the parent since it's so quick. We can just stop watching the directory before deleting, which also reduces noise.
LRDOCS-1286 Markdown converter supports sidebar syntax
LPS-49339 Recurring events have their day and time calculated in the calendar booking time zone