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`.
Directly using th.check and th.fail seems cleaner to me, instead of returning a value to test().
For example:
try {
  obj.getChars(0, 0, new char[0], -1);
  th.fail("Exception expected");
} catch (ArrayIndexOutOfBoundsException e) {
  th.check("Exception expected");
}