Allow job state transitions to skip intermediate states

A client can set the target state of a job to launched while the actual state is inactive (or vice versa).