Do not assume DST starts/ends on the same date in every year.
(calendar-dst-check-each-year-flag): New customizable variable.
(calendar-dst-find-data): New function, extracted from
calendar-current-time-zone.
(calendar-current-time-zone): Use calendar-dst-find-data.
(calendar-dst-transition-cache): New variable.
(calendar-dst-find-startend, calendar-dst-starts)
(calendar-dst-ends): New functions.
(calendar-daylight-savings-starts)
(calendar-daylight-savings-ends): Change value to use
calendar-dst-starts, calendar-dst-ends; respectively.