Fixes #2 - Add tryLock() to BlockingWriteLock which tries to obtain the lock, and returns true if lock obtained within 1 second, otherwise returns false to indicate lock was not obtained.
Fixes #1 - Make DistributedOperation use generics instead of simply returning Object.