5cc1f08f

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

ical-recurrence: record how colliding observances are resolved

If two observances of one time zone put a transition at the same local
time, timeZoneRuleOccurrences can only keep one, and M.unions keeps the
leftmost of the maps it is given.  Those arrive in Ord TimeZoneObservance
order, which compares DTSTART first and the offsets after it, so the
smaller TZOFFSETTO wins and the order the calendar listed them in has no
say in it.

Checked with a time zone holding two STANDARD observances that both start
at 20200101T000000, one going to +0200 and the other to +0500.  An event
in June resolves to 10:00 UTC either way round, so the +0200 one wins
whichever order the file lists them in.

Worth saying that it is deterministic: the answer does not depend on the
order the observances happened to be parsed in, which is the failure this
looked like it might be.  It is only arbitrary.

Recorded rather than changed.  The spec does not say what a time zone
whose observances disagree about one instant means, so there is nothing to
be faithful to, and "last one listed wins" or "latest DTSTART wins" would
be no less arbitrary.  Rejecting it would turn input that resolves today
into an unfixable error.