Merge pull request #18 from changbl/working

Add leader election via ZooKeeper/Kazoo
Store mappings in Zookeeper:

All dictionaries, except dpset, are stored remotely
in Zookeeper. dpset is stored locally and updated on
connection.
A dictionary dict with entries of the form:
key => value
is represented in the Zookeeper as a parent znode,
named "dict", followed by a number of child znodes,
each of which stands for a key:value pair, with the
znode's name being "key", and znode's data being "value".

For example, a dictionary dict with two entries:
{id1:name1, id2:name2}
is represented in Zookeeper as follows:
Parent znode: (name=dict, data=None)
Child znodes: (name=id1, data=name1);
      	      (name=id2, data=name2).
Merge pull request #21 from powerist/working

Store mappings in Zookeeper:
Improve ZooKeeper-relevent code quality (WORK-IN-PROGRESS, DON'T
MERGE)

Variable naming and locations, code format, and other design issues,
etc