String::substring() performance

This pull request improves the `String::substring()` method's performance:

### Script used for profiling
```sh
$ xp -e '$s= new String($argv[1]); for ($i= 0; $i < 100000; $i++) { $s->substring(1, 5); }' ...
```

### Results
0m0.766s `->` 0m0.704s using an empty string as argument
0m1.296s `->` 0m0.966s "Hello World, this is awesome"
0m9.247s `->` 0m7.173s for 1406 bytes (the size of `README.md` in the xp repository:))