fix(calendar): handle RRULE BYDAY ordinals and DST transitions
Add MONTHLY+BYDAY ordinal support to the ICS RRULE parser. Rules like
FREQ=MONTHLY;BYDAY=2TU (second Tuesday) and BYDAY=-1FR (last Friday)
now correctly expand to the Nth weekday occurrence in each month.
New functions: nthWeekdayOfMonth (positive/negative ordinal lookup),
parseByDay (ordinal+day extraction), and a new MONTHLY+BYDAY branch
in expandRRule.
Add 34 tests covering BYDAY ordinal parsing, monthly expansion with
ordinals and intervals, full ICS import integration, DST spring-forward
and fall-back wall-clock preservation across all recurrence frequencies,
timezone conversion edge cases (ambiguous/skipped times), and yearly
recurrence across DST boundaries.
Closes #561, Closes #521