Ensure error messages are always valid UTF-8

Given all of the scenarios for a MySQL error message's encoding, the end result is either a) a potentially corrupt string or b) a valid UTF-8 string. In any case, we'll want to end up with a UTF-8 string eventually. This also moves the encoding cleanup logic up into Ruby where it's a little easier to manage.

I think in a perfect world we might add an `error_encoding` option which the caller could set and we'd use in place of UTF-8.