269abe80

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

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 1m59s 1s 1s 2m01s 1m59s
Eval 3m18s 13s 13s 3m32s 1m17s
Build 3m32s 1m09s - - 12m59s
Suite 1m59s 1m24s - - 1h44m58s