Fixes RAM-566 by catching an exception
Added zookeeper submodule.
First cut at ExternalStorage and ZooStorage classes (ZooStorage doesn't
yet have timer-based code to refresh lease).
Converted references back to pointers in Dispatch and ServiceManager.
Added new "filterTest" target  to make it easy to run a subset of the
unit tests. For example, "make filterTest FILTER='Dispatch*'" will run
just the Dispatch tests.
Created Unlock class (temporarily releases mutex, reacquires on destruction).
Created new WorkerTimer class: timers where the handlers run in a worker thread.
Fixed race in WorkerTimer between destructor and handler invocation.
New class DataBlock: synchronized access to a shared block of data.
Added timer-based lease renewal to ZooStorage.
Added monitor lock to ZooStorage to make it thread-safe. Had to do some re-factoring along the way.
New class MockExternalStorage.
Added CoordinatorUpdateManager class: tracks sequence numbers for
recoverable coordinator operations.
Added basic plumbing to incorporate ExternalStorage into the coordinator
(new command-line option, etc.). The default is to use a mocked version of
ExternalStorage. The ExternalStorage is not yet actually used by the
coordinator for anything interesting.
Added new ServiceMask methods: hasAll and hasAny.
Added new method AbstractServerList::nextServer (for iteration).
Fixed bug in AbstractServerListTest::nextServer: failed if only one server in cluster.
Modified RetryException and STATUS_RETRY so that the server can specify
how long to wait before retrying; RpcWrapper automatically waits this long.
Added new constructor for TestLog::Enable that takes a string
predicate, rather than a predicate function.
New method ExternalStorage::getProtoBuf.