os: implement VimL libcall with {mch,os}_libcall

The old mch_libcall was removed from neovim. This is a partial
reimplementation on top of libuv. It doesn't catch exceptions (windows) nor
signals (unix) though, so it's quite a bit more prone to crashing if the
loadable library throws an exception or crashes. Still, it should be fine
for well-behaved libraries. Requested by @Shougo.
os: remove legacy mch_libcall

Remove as much leftover cruft as possible. Tried to see which globals are
now not used anymore.
libcall: remove libcall ifdefs

Remove all the legacy code that related to mch_libcall in some way.
os_libcall is implemented on top of libuv now.
Merge #802 'implement VimL libcall with os_libcall'
Temporarily switch python-client branch for testing
wstream: document default value for 'maxmem'
wstream: Pass WBuffer refcount as a constructor parameter

This is required to handle broadcasting when the first write fails.

Ref: https://github.com/tarruda/neovim/commit/11916b6b595421ce2ece10f7aa40757cc4937c0c#commitcomment-6792287
api: Refactor write_msg to use separate out/err buffers
channel: Refactor channel_from_job to return the channel id
channel: Implement channel_exists function
job: No longer free the job data. It's now done by the exit callback
channel: Bugfixes and refactor

- All functions that require a channel id will fail when the channel was
  disabled
- Rewrite `call_stack_unwind` as `call_set_error`. It will now disable the
  channel and set error on all frames. The stack will be unwinded automatically
  while the involved functions exit.
- Remove `disable_channel` function. If channels are disabled, they will be
  closed as soon as possible
provider: New module used to expose extension points for core services

Introducing the concept of providers: co-processes that talk with the editor
through the remote API, and provide implementation for one or more core
functions.

There's a `provider_register` function that has an API wrapper, this function
can be used by channels that want to self-register as a Neovim provider.

This implements the provider module without exposing any extension points, which
will be done in future commits.
provider: Add support functions for calling external interpreters

This uses the provider module infrastructure to implement common code for
vimscript commands/functions that need to communicate with external
interpreters, eg: pydo, rubydo, pyfile, rubyfile, etc.
provider: Add support for python commands/functions

This uses the provider/scripting infrastructure to reintroduce python support
through the msgpack-rpc API.
provider: Add support for clipboard registers.

This reimplements the '+'/'*' clipboard registers(both are aliases to the same
underlying register, no separate register for the X11 selection) on top of the
provider infrastructure.

It also adds new boolean option: 'unnamedclip', which has the same effect of
setting 'clipboard' to 'unnamedplus' in vim

The 'clipboard' option was not reused because all values(except 'unnamedplus')
seem to be useless for Neovim, and the code to parse the option was relatively
big. The option remains for vim compatibility but it's silently ignored.

Closes #583