Move many includes down to the EXITFREE block.

They're unnecessary for the rest of the file, and they're only there at
all to help implement `free_all_mem` for use with Clang's Address
Sanitizer.  So let's move them to avoid any confusion about why they are
there.
Merge pull request #1439 from jszakmeister/shuffle-some-includes

Move many includes down to the EXITFREE block.
eval: Add eval_call_provider/eval_has_provider functions

These functions use registered funcrefs 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: Implement `provide()` function

This function can register vimscript callbacks that implements a C features.
The registered function is called by eval_call_provider.
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
runtime: implement python/clipboard with runtime scripts

- Move the python provider implementation(script_host.py) from the python-client
  repository to this one
- Use the `provide()` function to implement python/clipboard features
- Add runtime scripts for working with external plugins and hosts
- Add tests for the new runtime scripts