Create a day-type refinement of the public-holiday column.
Returns two integer columns derived purely from the weekday and the public-holiday calendar (pure calendar arithmetic — known years ahead, leakage-free):
is_workday: 1 when the day is Monday–Friday and not a public holiday, else 0.
day_type: an integer class with public-holiday precedence — 0 working day, 1 Saturday (non-holiday), 2 Sunday (non-holiday), 3 public holiday (any weekday). A public holiday that falls on a weekend is still classed as 3.
These remove some of the worst single-day errors a plain holiday flag leaves behind (Ziel 2018, ziel18a).