The sun trajectory calculation previously emitted garbage if midnight
sun or polar night phenomena was in effect. To fix this, the calculation
is overhauled to report if the computation failed, and if so, which
specific phenomena was the cause.
Timing recalulation uses this information to change out of the normal
state that uses the four sun position timings, into a static state where
wlsunset simply waits a day at a time for a normal sun trajectory
pattern to be restored. In this state, a fixedc high/low temperature is
set as appropriate for the phenomena.
A transition phase replicating the previous day's sunrise is used to
smooth out entry into a midnight sun, which would otherwise cause a
jarring instant-daylight setting.
Low-to-high animation runs from sunrise to sunrise+duration. However,
high-to-low animation ran from sunset to sunset+duration.
Run high-to-low animation at sunset-duration to sunset.
The compiler is confused by the circular switch, and thinks that temp
might become uniniitalized. This is clearly false, as it is set at all
switch breaks.
Silence the warning by explicitly initializing it to zero.
Add a SPEEDRUN define which, if set, will run wlsunset at 200x
super-realtime to aid testing.
Sleep timing calculations were approximated and often off. These have
been adjusted from testing using the SPEEDRUN feature.