String::substring() performance

This pull request improves the `String::substring()` method's performance:

### Script used for profiling
```sh
$ time xp -w '$fixture= new String($argv[1]); for ($i= 0; $i < 100000; $i++) { $fixture->substring(1, 5); } return $fixture;' 'Hello World, this is awesome'
```

### Before
0m1.296s

### After
0m0.966s