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

Here we start modifying elements from the beginning of the vector, but at the same time removing elements from the end. The removed elements are not modified, because the vector size in the loop condition is not constant.

Would be nice to have a `kv_clear` that sets the size of the vector to zero, so no `kv_pop` would be needed here.