[RFC] Add support for client-side RPC

This PR finishes implementing the necessary infrastructure(`channel_send_call` function) that will support the ex commands responsible for running code other scripting engines(python, pyfile, ruby, rubyfile, etc). They will be compatible with vim versions with the following differences:

- Code will run in another process
- The `channel_send_call` function blocks until the client responds
- There's a hardcoded 3 second timeout before nvim assumes the client is stuck and and an error is returned(`python << EOF while True: pass EOF` would only block for at most 3 seconds, for example).
- The call stack depth is limited to 20 which should be more than enough for any use case. If a plugin ever needs this level of nesting for RPC calls, it should probably be rewritten.

Just saw `broadcast_event` (again). It reuses the same buffer to send events for different channels. When one write fails, the remaining writes do not have a valid buffer. Would it work to set the refcount (= number of uses) before the first call to `wstream_write` and only delete the buffer if `refcount == 1` (so no `refcount++ ` in `wstream_write`)?