mrb_str_dup return shared string instead of new string

This fix expect to reduce memory when used mrb_str_dup. (though just a little)

```
$ uname -a
Linux localhost.localdomain 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
$ valgrind --leak-check=full build/host/test/mrbtest
```

before:

```
total heap usage: 65,023 allocs, 65,023 frees, 4,322,442,034 bytes allocated
```

after:

```
total heap usage: 64,812 allocs, 64,812 frees, 4,322,435,490 bytes allocated
```