ccd909c1

ical-recurrence: test that a UTC Until includes the instance that falls on it

UNTIL bounds a recurrence rule inclusively, but lessThanUntil compares
the instance's local time against the UNTIL instant read as a UTC wall
clock, without ever converting between the two.  The comparison is
therefore off by the event time zone's offset from UTC.

recurRecurrenceRuleLocalTimes cannot fix this on its own because it is
handed a bare LocalTime and knows nothing about the time zone; the
DateTimeStart is still available one level up, in
recurRecurrenceRuleDateTimeStarts.

For a zone east of UTC the last instance is dropped, as here.  West of
UTC the same comparison over-generates instead.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 0s 0s 1s 0s
Eval 16s 13s 13s 30s 14s
Build 29s 1m50s 6m02s 6m32s 4m31s
Suite 0s 2m05s 6m31s 6m32s 4m47s

Timeline

0s20s30s5m10s5m20s5m30s5m40s5m50s6m6m10s6m20s6m30s