Commute degeneration fix.

It was possible for a commute, when degenerating, to execute without
checking the lock. The Enlist method would have added the item to the
Enlisted set before running commutes, so they would all assume the lock
was already checked since their Enlist calls returned false. New test catches
this problem, and the change in Shield fixes it.