Overhaul the way EventLoop is specialized so that it's possible to hook up to an existing event loop infrastructure that is not KJ-aware.  This also makes the async IO API more dependency-injection-friendly.
Fix valgrind bugs.
Actually call setRunnable() as documented.
EZ RPC interface for quickly setting up clients and servers.
Split AsyncIoProvider into high-level and low-level interfaces, so that alternate EventPort implementations can implement the low-level interface and reuse the higher-level stuff.
Support DNS lookup.
Introduce WaitScope for making it clear what functions might wait().
Fix stuff.
Fix and test DynamicCapability tail calls.
Make all Promise methods consistently consume the promise (returning a new promise when it makes sense), rename daemonize -> detach, and make eagerlyEvaluate() require an error handler (this caught several places where I forgot to use one).
Rename Object -> AnyPointer.
Deal with remaining TODO(now) / TODO(soon).
Get rid of 'Advanced' server methods, just have one method that takes a CallContext.  A typedef reduces boilerplate.
Change capability pointers to be indexes into a separate cap list so that CapDescriptors can be interpreted on receipt rather than delaying until the application actually traverses the message.  This massively simplifies a lot of things.
Just realized isCanceled() doesn't work.  Remove it.
Optimize promise tail calls by making ChainPromiseNode automatically detect and remove redundant nodes.
Fix Makefile.am
Extend totalSizeInWords() to also return a count of capabilities, which helps when a separate capability table needs to be allocated as well.  Use this in the RPC system.