mds: rewrite SimpleLock using generic state specifications; new xlock semantics
Same client can re-xlock an item (or read_projected) if the prior
locker set_xlock_done(). Move from XLOCKDONE to either SYNC or
LOCK, depending on whether read leases/locks have been issued.
Still need to convert FileLock and ScatterLock to use the new
state machine specification. (This will probably make those lock
types mostly go away.)