Low: scheduler: make asymmetric ordering handling more efficient
handle_asymmetric_ordering() makes the 'then' action in an asymmetric ordering
unrunnable if the 'first' action is unrunnable, with a few exceptions.
Previously, the exceptions were checked first, then the 'first' action was
checked for being unrunnable. Do the unrunnable check first, to avoid having to
check the 'then' state unnecessarily.
The exceptions are stopping a stopped resource and starting a started resource.
In those cases, there's no need to make the redundant action unrunnable.
Previously, starts would be considered for this exception only if optional,
since mandatory starts indicate a restart, which should still be made
unrunnable.
Now, stops are only considered if optional as well. This has no effect on
regression tests, and a mandatory stop for a stopped resource is likely not
possible with the current code. For future-proofing however, the logical intent
should be the same, that if a stop is mandatory, it should be made unrunnable
even if the resource is already stopped.