Adding SrvShard locking and test code.
Implementing srvShard lock for tee.
Adding the new rebuild implementation that uses the locking.
Changing other places to not lock shards.

When we do a rebuild, no need to lock a shard if UseSrvShardLocks
is on.
libzookeeper_mt prior to 3.4.x doesn't handle IPv6, so prune the resolved addresses we give the library for now.
Add directory semantics to zk, make magic prefix configurable.
Make default paths externally accessible. Add IsDirectory() function.
Extract zkns pdns adapter code and fix a number of small bugs. Improve test clarity.
List cells when listing the root directory.
Improve CNAME resolution. Improve SRV record randomization.
Add support for weightless round-robin A records.
Add a distributed lock primitive that handles complex edge cases.
Simplify DNS SRV record shuffling.
Add election support methods.
Add basic support for protobuf rpc. Check in envelope so there is no dependency on the proto compiler.
Adding tests for new rebuild.
Merge branch 'master' into replication
Adding missing test.
Handling errors properly in new rebuild.
Add comments.