Fix hang in Watchdog

Interrupt processing after `unlock` may allow `s_ticks` to advance twice, causing the loop test to miss when `s_ticks == stop`.  Instead, use signed comparison of remaining ticks.  Well, I suspect that's what is happening.  Test code has isolated the hang to inside `Watchdog::await`, but without a JTAG I cannot narrow it down any further.  This fix *appears* to eliminate the hang.

This fix retains the behavior of always yielding at least once.