Implement new streaming APIs

This adds new functions that are used by coordinators and workers to
negotiate an RPC stream. A stream is simply any response that requires
multiple messages from the worker.

BugzId: 22729
Exit with timeout instead of returning an atom

Every function that called `rexi:stream/1` had to check the return value
for timeout and would then call `erlang:exit/1` if that atom were
returned. Rather than force every function to make this check this just
calls exit in `rexi:stream/1`. Its possible to catch this if a process
ever happens to require it.

BugzId: 22729
Allow callbacks to update their list of workers

We need this to be able to allow coordinators to replace nodes that are
in maintenance mode.

BugzId: 22729
Merge pull request #17 from cloudant/22729-implement-new-rexi-stream-api

22729 implement new rexi stream api