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.

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

This implements support functions for vimscript commands/functions used to talk
with external interpreters, eg: pydo, rubydo, pyfile, rubyfile, etc.
provider: Add support for python commands/functions