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
Bump version
Bump 0.0.8
Remove explicit method binding
Update default paths in test_runtime_paths

- Neovim runtime path is now PREFIX/share/nvim
  instead of PREFIX/share/vim
- Neovim rtp may differ if the runtime folder is
  installed under the default path - updated the
  test to allow both options
Merge pull request #15 from equalsraf/tb-vim-dir

Update default paths in test_runtime_paths
Remove thread-safety from the API

This library will no longer support calls from multiple threads in order to
avoid unnecessary overhead associated with heavy usage of locks/conditions. Now
the only thread-safe way to communicate with the API is through the push_message
method.
Remove timeout from API functions
Refactor to use greenlets for concurrency

This is a major refactor to the architecture of the library:

  - Move code from client.py to msgpack_stream.py and rpc_stream.py. Now
    client.py interfaces with a "stream stack", where the top-level is
    responsible for handling the msgpack-rpc details.
  - Now the UvStream class has been refactored to provide a callback-based API
    The blocking API is now simulated in client.py.
  - Greenlets are used to handle nested requests with a synchronous API
  - The asynchronous versions of API methods have been removed(those starting
    the 'send_')
Add 'greenlet' as a PyPI dependency
Fix URL of prebuilt neovim dependencies
Merge pull request #17 from tarruda/refactor-concurrency

Refactor concurrency model
Add scripts for removing log statements before publishing

Profiling this library with nvim and YouCompleteMe opening big files showed that
the log statements(mostly the 'debug' ones) were the cause of significant
performance impact, even with logging disabled at the debug level(about 3
seconds improvement on the benchmark described at #17)

This commit adds a set of scripts that temporarily remove log statements in
order to publish a more optimized version to pypi.

The script used to process the python files were taken from this article:

http://dound.com/2010/02/python-logging-performance/
User eager buffer evaluation while iterating lines

When some python code needs to iterate the lines of a buffer, it is best to
evaluate the lines eagerly to avoid unnecessary msgpack-rpc round-trips.

This is not only faster, but more coherent with vim behavior, since with nvim
it's possible the buffer is modified in the middle of a loop
Bump version
Merge pull request #19 from tarruda/more-optimizations

More optimizations
Process all messages before throwing EOF errors
Merge pull request #20 from tarruda/fix-next_message-error-handling

Process all messages before throwing EOF errors
Bump version
Refactor UvStream constructor