[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.

Indeed @oni-link, this is a dubious practice. There are several ways to rewrite it, a `kv_clear` could work and would perhaps be more efficient. My first mental rewrite was:

```c
while (kv_size(channel->call_stack)) {
  ChannelCallFrame *frame = kv_pop(channel->call_stack);
  frame->errored = true;
  frame->result = STRING_OBJ(msg);
}
```

I wasn't sure why the `kv_pop` was ordered between the `frame->` assignments.