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

If `id` is negative, this turns it into 0. It might be useful to have a sanity check if `id < 0`.