Remove obsolete TODO from #53
Add distinct status code for canceled RPCs

This allows users of ClientRPC to distinguish between failed RPCs and
those that have been canceled by the client.

Towards #71: client keepalive shouldn't prevent client programs from
exiting
Trivial move of code block in Client/ClientImpl

No code was changed.
Make exiting clients abort an ongoing keepalive RPC

This required refactoring LeaderRPC::call() significantly so that the
RPC it uses is exposed for canceling.

Fix #71: client keepalive shouldn't prevent client programs from exiting