core: `sched_switch()` switch if not on runqueue

Fixes #1935.

`sched_switch()` should not only switch if the other priority is higher,
but also if the current thread was moved from the runqueue.

This PR is part of #1939.
This is not really a sentence, so the trailing period is silly. I wouldn't NAK because of this (especially as it's done all over the place), but as you're about to address the other comment anyways ;)