(#227) allow for usage of non-blocking locks inside with statements

 Introduce an optional argument to __init__ allowing for specification of blocking behavior at instantiation while maintaining backwards compatibility.

This allows for use of non-blocking Locks inside with statements.

------------------------------------------------------
```
zk = KazooClient()
with zk.Lock("/lockpath", "my-identifier", blocking=False) as lock:
    if lock.is_acquired:
        # do something
```
------------------------------------------------------

This is confusing logic to follow and seems like it could cause issues in someone's code. That is, if a lock was created with blocking=False, but then someone wrote code using a lock elsewhere like:
```
lock = zkLock.acquire(blocking=True)
```

Then it would in fact not block despite passing it in explicitly because of how it was instantiated.