Implement PluginHost and ScriptHost classes

- Fix UvStream for stdin/stdout transport
- Add logging messages for easier debugging through NEOVIM_PYTHON_LOG_FILE
  environment variable
- Add profiling through the NEOVIM_PYTHON_PROFILE environment variable
- Fixed more python-vim bridge compatiblity issues
- Add a vim_compatible option to transform numbers resulting from `vim.eval`
  into strings
- Add vim.timeout to represent `next_message` timeouts errors.
- Add tests for the PluginHost

This enables usage of the python client as a plugin host for Neovim, enabling
limited support for python plugins developed for vim.

An additional feature is provided: Modules under 'pythonx' added to runtime
directories are automatically loaded if the name starts with 'nvim_'. Such
modules must implement a class with name starting with 'Nvim'. Implementations
can use the __init__ method to listen for Neovim events and provide
implementation for core services. Right now this feature is still limited, but
here is an example: https://gist.github.com/tarruda/42f5236449857278f911