Handle exception message with invalid UTF-8; For rbx

See https://travis-ci.org/mikel/mail/jobs/33707769#L129

```plain
An exception occurred running /home/travis/build/mikel/mail/gemfiles/vendor/bundle/rbx/2.1/gems/rspec-core-3.0.4/exe/rspec:
    invalid byte sequence in UTF-8 (ArgumentError)
Backtrace:
    Rubinius::Splitter.valid_encoding? at kernel/common/splitter.rb:17
    Rubinius::Splitter.split at kernel/common/splitter.rb:22
    String#split at kernel/common/string.rb:515
    RSpec::Core::Notifications::FailedExampleNotification#failure_lines at \
          gemfiles/vendor/bundle/rbx/2.1/gems/rspec-core-3.0.4/lib/rspec/core/notifications.rb:220
```

To reproduce with just the one test

```sh
 rspec spec/rspec/core/formatters/base_text_formatter_spec.rb:108
```
On the surface, I like the idea of it all being handled there, but I haven't really worked in that code so off the top of my head it's not clear how easy or hard that would be.  If you think it would be easy to take care of this there and then leverage that class here, I'm in favor of the idea.

Anyhow, if you keep this here, I'd like to see the `if String.method_defined?(:encoding)` check moved out into the class body so that it defines an appropriate version of the method.  That way, the conditional is evaluated once (at load time) rather than every time this method is called.  Something like:

``` ruby
if String.method_defined?(:encoding)
  def exception_message
    # your encoding logic
  end
else # for 1.8.7
  def exception_message
    exception.message.to_s
  end
end
```

(The `# for 1.8.7` comment will help us find and remove this code when we drop 1.8.7 support).