Fix I18n.interpolate when ActiveSupport::SafeBuffer passed as argument

There could be a problem with ActiveSupport::SafeBuffer and I18n interpolate.
I've implemented a part of SafeBuffer that cause the issue in the test case.

``` ruby
I18n.interpolate("%{a}".html_safe, :a => 1)
```

By some reason $1 and $2 is not set appropriately and we have to use gsub match data instead.