Add two refactor commits to the refcount branch

First is a refactor of the refcount, adding a reference to the Client that spawns each Result. This will help prevent shutting down the client connection if there is still a result outstanding, and prevent the GC for collecting a client prior to collecting a Result. It is still possible that the Result and Client are collected in the same run, and that is accounted for here as well.

Second is a refactor of the rb_mysql_result_to_obj function, passing the encoding and query options as arguments. It is much cleaner this way. In the future it would be nice to pass these though to Mysql2::Result.initialize, too.

I don't mind if you rebase / squash some of the commits, as long as I don't lose too much `git blame` glory ;)