Port StringBuffer to JS.

Would close #346.

- Moves `String.intern` to `string.js`.
- Implements all methods of `StringBuffer`, using the properties `buf` and `count` for manipulation.
- Test coverage in `StringBufferTest.java`.
That's true, but there are cases where the array will have already written bytes to those indices (i.e. it's not a "fresh" array), in which case we still need to fill the remaining bytes with `0`. For instance:

- "abcde", capacity 5, count 5
- setLength(3) => "abc", capacity 5, count 3
- setLength(5) => "abc\0\0", capacity 5, count 5