Review Board 1.7.22

ZOOKEEPER-965 - Add multi operation

Review Request #739 - Created May 12, 2011 and updated

Ted Dunning
This mega-patch adds the multi-op capability to ZK.  This allows a batch of create, delete, update or version-check operations to 
succeed or fail together.   Both C and java bindings are provided.
A number of unit tests have been implemented.  Test coverage is very good.

A sample application has been written to do simple operations on a graph of nodes.
Review request changed
Updated (May 29, 2011, 11:54 p.m.)
This should have fixes for a problem in the c api and for removing the pending changes in the data tree
as suggested by Ben.
Posted (June 2, 2011, 11:12 p.m.)
this looks really great! one thing to think about (you don't need to think about it too long, but it would be great if you could "fix it"): we generally only use generated jute Record instances. i think this makes it easier if we ever switch serialization libraries, but MultiResponse is not generated. i understand why, but it would be cool if we could use a generated class. this is not blocking the patch.

the cleanup of pending ops was not in the uploaded diffs, but i looked at the code on git hub. i think this is almost right, but removeChangeRecord has a bug: we do the checking based on the Map not the list, so when we remove the ChangeRecord we need to check to see if there was something there before that we replaced and put it back. i think this is the last blocker that i can see.