Better scheduling tests

This commit tests more of the finite state machine's functionality that was introduced in #699, including disabled direct modification of the FSM and most of the expected state transitions. There's also a ninja fix in here for #743 as well.

closes #700