schedule: split Scheduler::next_thread() into separate functions
next_thread() is basically overloaded to perform two different
functions, depending on the parameters. In one case, a caller might pass
a NULL thread, which meant that Scheduler is free to select its own next
thread. In another case, a caller will pass a non-NULL thread, which
meant that the caller is simply informing the Scheduler of the next
thread to execute (i.e., which one is "currently running").
These separate functionalities are now separate functions:
Scheduler::select_next_thread()
Scheduler::set_current_thread(Thread *)