eval: Add eval_call_provider/eval_has_provider functions

These use autoloaded vimscript 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).

When calling the rpcrequest function from a provider, temporarily switch to the
caller scope. This is required for compatibility with legacy plugins, because
they may depend on scope information that changes when "leaving" the C stack to
enter the vimscript stack.
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
channel: Remove invalid free_channel call

When a job fails to start, it will already call the exit_cb which takes care of
freeing the channel.
channel: Improve error reporting for invalid responses
runtime: Add vimscript support for external plugins

External plugins(a.k.a msgpack-rpc plugins) are now supported through a
library of vimscript functions that deals with:

- Associating plugin host names(eg: python, ruby, go) with channel ids
- Registration of external plugins
- Definition of commands, autocmds and functions lazily implemented over
  msgpack-rpc
runtime: Reimplement python/clipboard providers in vimscript

Clipboard is implemented with platform-specific shell commands, and python is
implemented with the external plugin facility (rpc#* functions). The
script_host.py file(legacy python-vim emulation plugin) was moved/adapted from
the python client repository.
runtime: Remove 'python_setup.vim'
test: Add tests for the rpc#define#* functions
test: Add tests for the python provider

These tests were adapted from the python-client repository
docs: Update to the latest changes in the plugin infrastructure
Merge PR #1454 'Refactor plugin system'