getTimes now constructs civDate = DateTime.utc(date.year, date.month, date.day, 12, 0, 0)
at entry and passes it to both getSpa and getAngles. Previously a local DateTime in a
positive-UTC-offset zone (e.g. UTC+12) would reach getSpa.toUtc() as the previous UTC
calendar day, shifting all prayer times by ~24 h. Regression tests added for UTC/local
DateTime consistency across UTC, EDT, and Auckland host timezones (27 tests, all pass).
Replace the 1280-line bundled SPA implementation with a dependency on
the nrel_spa package. SpaResult and SpaAnglesResult are now re-exported
from nrel_spa for backwards compatibility. All 24 tests pass unchanged.