channel: fix `REQ` definition for msgpack-rpc logging
msgpack-rpc: Terminate server->client calls when the channel closes
test: Small fixes and improvements to functional helpers.lua

- Move the cleanup function definition into `restart()` so restart can be
  selectively used as a hook
- Improve error handling: Before this, errors while running the event loop would
  cause busted to get stuck. Now the error is properly raised by stopping the
  event loop first.
input: Fix conversion error in `convert_input()`

The `rbuffer_consumed` was being passed a consumed count from another buffer,
causing integer overflow in `rbuffer_relocate`.

Fixes #1343
Merge PR #1354 'Fixes to channel.c, input.c and helpers.lua'
eval: Allow setting vim variables of UNKNOWN type
fileio: Extract `should_expand_filename` from `apply_autocmds_group`
fileio: Refactor `has_autocmd` to work with patterns that aren't files

has_autocmd can be used if there are autocommands matching a certain filename.
Some autocmd events use patterns that aren't filenames, allow has_autocmd to be
used with them.
eval: Add v:provider_args/v:provider_result variables
fileio: Add ProviderCall autocommand
eval: Add eval_call_provider/eval_has_provider functions

These functions use the v:provider_args/v:provider_result and the ProviderCall
autocommand to replace the provider_call/provider_has functions, moving the
implementation of providers to pure vimscript(we lose nothing since vimscript
can also call msgpack-rpc functions).
eval/ex_cmds2/ops: Implement providers with eval_call_provider

Replace references to provider_call/provider_has with the new functions
eval_call_provider/eval_has_provider.
Remove os/provider.{c,h} and all of its references
add sample script for the ProviderCall autocommand
runtime: Implement python/clipboard providers with runtime scripts

Move the python provider implementation(script_host.py) from the python-client
repository to this one, and add runtime scripts that use the ProviderCall
autocommand to bootstrap the python provider and implement the clipboard
provider using shell commands.
eval: Use scope information from provider caller in rpcrequest

When running the rpcrequest function from a ProviderCall autocommand,
temporarily switch to the caller scope.

The reason for that is because we want to trat rpcrequest calls made from
ProviderCall autocommands as if they were direct calls to the
`channel_send_call` function(ProviderCall will be used to implement old ex
commands that expect this behavior, since they were previously implemented in C)
Add autoload for host manipulation
runtime: Allow a channel id to be passed to rpc#host#Register

This simplifies testing functions that are supposed to bootstrap a host
runtime: Add autoload/rpc/define.vim and test

This new vimscript module will contain common code used by hosts that need to
define commands, autocommands and functions to be executed over msgpack-rpc.
tmp