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