Improve error handling

- Don't emit a fatal error when receiving signals
- Handle SIGINT(useful for console testing)
- Throw received error on next_message()
Bump version
Update Nvim error handling

Now errors sent from Nvim are [code, message] arrays, this adapts the error
handling code to account for that.
Ignore SIGINT when talking to nvim via stdio

This is necessary because the python host runs in the same session as nvim(and
receives SIGINT when the users presses ctrl+C)
Bump version
Add flake8 checking on travis-ci
Remove UvStream class start refactoring event loop layer

This is the start of a huge refactor that has the following goals:

- Simplify code
- Reduce coupling between components
- Remove most python-specific metaprogramming practices in favor of a more
  classic/simpler object-oriented approach that should mirror to constructs
  found in other languages more easily
- Improve readability
- Use flake8 as a linting program
- Provide an event loop layer using asyncio/trollius, which should make this
  library more easily portable to other python implementations

The motivation behind those goals is to transform this project into a
well-documented reference implementation of a Nvim client that can easily be
ported to other languages.
Add event loop layer implementation using pyuv

This is a port of the previous UvStream class to the new architecture.
Add event loop layer implementation using asyncio

The `asyncio` module is the new standard for eventloop-based applications. It
should enable usage of this library in platforms where pyuv is not available.
Add __init__ module for the `event_loop` subpackage

The module tries to use pyuv event loop if possible, falling back to the asyncio
implementation.
Adapt the msgpack layer to the new architecture
Adapt msgpack-rpc layer to the new architecture
Add synchronous msgpack-rpc layer

Previously the synchronous API was emulated by the `Client` class, now it fully
implemented in the msgpack-rpc subpackage
fix msgpackrpc init
fix async session
Add `compat` module for helping with compatibility across versions
Rewrite API layer for the new architecture

The API layer now fully distinct from the msgpack-rpc subpackage. Every API
class is created with a Session instance for making msgpack-rpc requests.
Move script_host.py/plugin_host.py to 'plugins' subpackage
Refactor the initialization package to reflect the new API
Fix tests