' schedule.bas — packing events into working days (docs/datetime_design.md §8).
'
' Its own library rather than more of dates.bas, because packing is not date
' arithmetic: dates answers WHICH day, schedule answers WHERE IN THE DAY things
' fit. Two entry points:
'
'   schedule.slots(day, spec, cal)    — cut one day into appointment slots
'   schedule.layout(plan, days, cal)  — pack ordered sessions into days
'
' Decided rather than discovered, and tested: sessions keep their order; a
' session that does not fit before day end MOVES WHOLE to the next day (never
' split silently); a session that fits on NO day lands in `unplaced:` rather
' than being dropped; breaks are immovable and gaps are not inserted around
' them twice. Booking state (who took which slot) is the application's, not
' this library's.
