Use String.scrub! or String.encode! for fast fixing of invalid UTF8 and use Unicode replacement character instead of ? AND add support for Ruby 1.8

@bastien contributed a fix to avoid `sanitize!` blowing up on invalid UTF8 sequences; his fix replaces invalid UTF8 sequences with `?`.

There is a standard Unicode replacement character `\ufffd` which is a more appropriate replacement character to use than `?`. This is the character we use for sanitizing invalid UTF8 elsewhere in Zendesk.

Instead of the character-by-character loop in `replace_invalid_chars`, we can either use `String#scrub!` in Ruby 2.1 and later, or `String#encode!` in Ruby 1.9 and later.

Note: This `to_utf8!` method is similar to the implementation in the private `zendesk_text` gem, which we can't create a dependency on from here.

Also added support for Ruby 1.8 (ree) which isn't encoding-aware.

/cc @zendesk/archer @bastien