Add a ZK shell

This is pretty much a handy clone of zkCli.sh that I use for the
same things (but I prefer to use a Kazoo based one - since it's
what the clients I deal with are using).

It supports the basic ops:

python2.7 contrib/shell.py localhost:2181
(CONNECTED) /> ls
zookeeper
(CONNECTED) /> create foo 'bar'
(CONNECTED) /> get foo
bar
(CONNECTED) /> cd foo
(CONNECTED) /foo> create ish 'barish'
(CONNECTED) /foo> cd ..
(CONNECTED) /> ls foo
ish
(CONNECTED) /> create temp- 'temp' true true
(CONNECTED) /> ls
zookeeper foo temp-0000000001
(CONNECTED) /> rmr foo
(CONNECTED) />
(CONNECTED) /> tree
.
├── zookeeper
│   ├── config
│   ├── quota

readline support is enabled (if readline is available).

You can also copy individual files your local filesystem to a znode
in a ZK host. Recursively copying from your filesystem to ZK is supported,
but not from ZK to your local filesystem (since znodes can have content and
children). Copying to everything under a znode to JSON would be fun (for
backups and such).

(CONNECTED) /> cp /etc/passwd zk://localhost:2181/passwd
(CONNECTED) /> get passwd
(...)
unbound:x:992:991:Unbound DNS resolver:/etc/unbound:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

Copying from one ZK cluster to another is supported, too:

(CONNECTED) /> cp zk://localhost:2181/passwd zk://othercluster:2183/mypasswd
Make proxies be contextmanager to ease up implementing stateful
ones (i.e.: JSON store proxy).

(also - fix small typo.)
Small cleanup of exception message.
Add a json:// handler to copy to/from JSON files to/from ZK

Example:

(CONNECTED) /> cp zk://localhost:2181/something json://!tmp!backup.json/ true true
Add autocomplete support for paths
Support recursive copy from json://
Handle KeyboardInterrupt correctly
Fixed bug in set_acls (@check_path was missing)
Implement watch command

This allows you to continously monitor all the child watches that, recursively,
fire under <path>.

Examples:

(CONNECTED) /> watch start /
(CONNECTED) /> create /foo 'test'
(CONNECTED) /> create /bar/foo 'test'
(CONNECTED) /> rm /bar/foo
(CONNECTED) /> watch stats /

Watches Stats

/foo: 1
/bar: 2
/: 1
(CONNECTED) /> watch stop /
Add autocomplete support for create
Clean up the impl of watch command

Moved watch mgmt logic into its own class to avoid conflating it with
the Shell's state. It'll also make it easier to test & expand.
Add license, README and .gitignore