[clean] prepared statements

The master branch has diverged quite a bit since the original prepared statement commits by tenderlove, brianmario, and nyaxt. I've gone through most of the original commits and wrangled them to fit a clean branch. Tests pass with each commit.

APIs featured:

`Mysql2::Client#prepare(query) # => Mysql2::Statement`
`Mysql2::Statement#execute(*params) # => Mysql2::Statement`
`Mysql2::Statement#param_count # => Integer`
`Mysql2::Statement#field_count # => Integer`
`Mysql2::Statement#fields # => Array[String]`

This PR includes commits from nyaxt up to 50a7054299e08af1356ffae80fda13301a5a882f. Most notably, his work on returning `Mysql2::Result` from `Mysql2::Statement#execute` is missing.

This PR supersedes others and gives us a clean slate to work from. 
You're probably right. I see no reason to keep them around after all the rows are fetched. The `#each` function will removed however, in favour of @nyaxt's code where `Mysql2::Statement#execute` returns a `Mysql2::Result`.