Reverted unneded logic nesting
Added runtimeLock
Covered RuntimeLock with unittest
Removed LockAbstract.
Removed \InvalidArgumentException from interface, each class now can provide a default name