improve the performance of string interpolation

This patch will reduce the count of reallocation.

* before
      user     system      total        real
 10.900000   0.280000  11.180000 (  9.054008)

 * after
     user     system      total        real
 8.880000   0.230000   9.110000 (  7.260528)

Test Code:
----
require 'benchmark'

Benchmark.bm do |x|
  part = "a" * 10

  x.report do
    1000000.times do
      "#{part} #{part} #{part} #{part} #{part} #{part} #{part}"
    end
  end
end