Watchers now correctly implemented.

There's a few tests to validate the behavior, but they could be more extensive.
Remove a superfluous comment
Fix a potential hang in unit tests
Flush requests and watches when killing client
Clean up errors
Make StartTracer accept listen & server addr arguments
Add a lock implementation based on the Zookeeper recipe

TODO: handle recoverable errors (server crashes after create causing a deadlock)
Add lock.go
Add a protected create for ephemeral/sequential nodes
Don't block on event channel.

Maybe this should be optional behavior. It's not good to ignore it.
Tell server about the connection being closed
Document the send/recv loop life cycles.
Fix typo
Fix typo
Remove disconnect() and move logic to Close()
For lock use GetW instead of ExistW to avoid leaving a watch.

ExistW sets a watch for both the node existing and not. For the lock,
in the case that the node doesn't exist the node will never exist
so the watch that gets created never gets triggered.
Add auth support
Small error change
Implemented Multi

Could use some more thought around the interface.
Fix a race condition creating watches.

In order to not miss events we need to create the watch before sending
the request. However, to avoid trigging the watch early we need to
check the zxid to make sure it's >= to the zxid for the response that
creates the watch.