Asyncio implementation and string fixup

Hi,

I'm not sure you interested in asyncio service implementation (especially given that it's incomplete, i.e. it lacks server-side implementation), but you should look at my commit https://github.com/tailhook/thrift/commit/5f272b204152dd795e266df8b176d8e8d0fcf0da for how strings are handled.

In your code you always decode ``readString()`` return value, which causes the issue for binary strings. I'm not sure I'm doing everything right (it's my first experience with thrift), but at least it works for my case (hiveserver2) with both binary and utf-8 strings. Please correct me if I'm wrong.

It seems strings are not going to be decoded if utf8string option is not specified. So it's kinda required for python3. May be enable it automatically, or document it as required?

P.S.: Unfortunately pull request contains my merge of master branch for upstream, hence it's too large. In fact it contains only one commit.