c69a7a02

By: Greg Pfeil <greg@technomadic.org>

Extend `CyclicCalendar`

This adds two more primitive operations to `CyciicCalendar`: `cycleLength` and
`ordinal`, which then allows a default implementation of `onOrBefore`.

It also generalizes a number of previously `DayOfWeek`-specific operations to
work for any `CyclicCalendar`.

Suite timing

Time to Start Worker time Duration Time to finish
Config 0s 6s 6s 6s
Eval 7s 3m46s 3m46s 3m53s
Build 1m34s 53m12s 31m54s 33m29s
Test - - - -
Deploy - - - -
Suite 0s 57m05s 33m29s 33m29s

Timeline

0s1m2m3m4m5m6m7m8m9m10m11m12m13m14m15m16m17m18m19m20m21m22m23m24m25m26m27m28m29m30m31m32m33m