Ensure we don't delete someone else's lock

The unlock! method previously deleted the lock key whenever it was
called.  The problem with this was that if a process took longer than
the allotted 500ms to perform its locked operation, someone else may
have taken the lock in the interim.  In this case, when the operation
finally finished the slow process would delete the other processes lock
instead of its own lock.

This fix saves off the timestamp from when the lock was acquired and
only deletes the lock when we actually still own the lock.  This does
not completely solve the slow process issue, but makes it significantly
better.
Increase lock expiration time to 2 seconds