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
channel: fix `REQ` definition for msgpack-rpc logging
msgpack-rpc: Terminate server->client calls when the channel closes
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)