FIX: IO#read create a large number of objects.

In `IO#read`, `String#+=` is used many times. So it creates a large number of objects and spends many cpu and large memory.

before:
```
% time ./bin/mruby -e 'File.open("/dev/zero").read(10000000); system "grep VmData /proc/#{$$}/status"'
VmData:	  225468 kB
./bin/mruby -e   1.78s user 2.59s system 99% cpu 4.375 total
```

after:
```
% time ./bin/mruby -e 'File.open("/dev/zero").read(10000000); system "grep VmData /proc/#{$$}/status"'
VmData:	   14520 kB
./bin/mruby -e   0.00s user 0.02s system 98% cpu 0.023 total
```