ActiveSupport::SafeBuffer#prepend inconsistency

Native ruby `String#prepend` modifies instance in-place, while `ActiveSupport::SafeBuffer` returns modified version, but the initial object remains unchanged.

```ruby
a = "bar"           # => "bar"
a.prepend "foo"     # => "foobar"
a                   # => "foobar"
b = "bar".html_safe # => "bar"
b.class             # => ActiveSupport::SafeBuffer
b.prepend "foo"     # => "foobar"
b                   # => "bar", expected "foobar"
```