Further String implementation

- Implement ::copy(), ::setCharAt, ::fill(), ::fromCodePoints(),
  ::toCodePoints(). This completes the support required by the R7RS
  standard library except for comparisons and case conversion.

- Fix major bug allocating and deallocating UTF-8 data that causes us to
  only allocate one byte. This was due to a new()/new[] confusion

- Add some missing const declarations
Explicitly include char length in Strings

This replaces the previous ASCII only flag which can now be checked
using charLength == byteLength. Due to alignment the String structure is
still 24 bytes on x86-64 even with the widened field.

This has a few advantages:
- ::charLength() is now O(1) instead of O(n) for Unicode strings
- The ASCII only property is now 100% accurate and does not need to be
  manually tracked when creating or mutating strings
- ::fill() without an end is more efficient