On Create(), verify that the child does not exist (don't just check the
nameholder).  Also, send back an entry's generation and number of
children from the directory index.
Better documentation of ListDir behavior
When reading an index node, return the value, not the index node.  Also,
add GetGeneration() method.
On getattr(), return the number of children and the generation of the
inode.
Add get_generation() and get_num_children() methods
Add MSEntryDirIndexEntry index for GAE
Use new (nothrow) when allocating data in workqueue.  Fix build--remove
non-existent macros (safe_new, safe_delete)
Update blackbox tests to use the new multi-request API in libsyndicate
Correctly deal with directory index nodes versus values in the external
API.
Correct workqueue double bufferring
Move all OpenID methods from core.cpp to openid.cpp
Add getattr and getchild for single inodes.
Add listdir() and diffdir() methods.  listdir() lists all elements in a
directory.  diffdir() lists all elements created since a particular
generation number was issued.
Don't report that we can't evict a non-existent entity in the cache.
Macro to test whether or not a struct md_entry is initialized.
Add fast-track single download method (happens synchronously in the same
thread).  Track initialization and finalization state in download
contexts.  Expose some error interpretation logic publicly.
Remove now-useless multi-download logic from the MS client.  Instead,
use libsyndicate's unified downloader logic.
Remove purpose-built MS request dispatch logic in favor of using
libsyndicate's unified downloader logic.  Upload requests and download
paths via this API instead.  Add request-building API to send batch
requests and receive replies from the MS.
Expose openid rpc methods via openid.h
Build workqueue.cpp