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_')