Recover from kill() while in command

If a thread has kill() after incommand was set, but before it actually
completed, then no fixup action will occur.  Correct this by shrugging
off incommand if it was set more than the maximum possible timeout
before so that things can try to recover.  An attempt was made with a
Lock and 'with', but kill() did not see the lock actually release, so
resort to expiring criteria instead.

Change-Id: I67d47a1533bf2e46db4534d9c1465bea08de6f64