Ensuring lock #timeout= behavior is consistent based on locked state

Closes #299
Merge pull request #362 from meatballhat/299-resilient-lock-timeout-attribute

Ensuring lock #timeout= behavior is consistent based on locked state