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

That seems to be the most clear-cut solution at first glance indeed.

Another alternative is to increment the refcount immediately but schedule the actual write request for the next event loop and then decrease the refcount as normal on error. But I find this rather ugly, roundabout, and inefficient.