There are a few functions that are used in suboptimal ways.
* use the ModelChecker::get_thread(ModelAction *) version of overloaded
'get_thread()' function
* the add/remove interfaces were used inconsistently previously; for
"waking" we directly utilized Scheduler::add_thread, whereas the
"sleeping" case used ModelChecker::remove_thread
* use the Scheduler::sleep and Scheduler::wake functions for sleep/wake
instead of explicitly adding/removing