Prefer to SHA1 other than MD5 in third-party downloads

If CMake version is less than 2.8.11, fallback to MD5
Merge pull request #1414 from xu-cheng/sha1_md5

Prefer to SHA1 other than MD5 in third-party downloads
job: Only force-close stdout/stderr when the job exits

stdout/stderr should only be closed after the job truly exits, or else we can
lose data sent by it.
Merge PR #1424 'Only force-close stdout/stderr when the job exits'
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
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)
runtime: ProviderCall implementations

- Move the python provider implementation(script_host.py) from the python-client
  repository to this one
- Implement python provider with ProviderCall
- Implement clipboard provider with ProviderCall
- Add runtime scripts for working with external plugins and hosts
- Add tests for the new runtime scripts