Implement the standard Charset encoders and decoders.

* US-ASCII
* ISO-8859-1
* UTF-8
* UTF-16 BE/LE/auto

This also fixes #1087: String.getBytes().
Not what the JVM does. And, additionally, completely nonsensical: the byte buffer may not store a string in any particular encoding. It might just contain, well, bytes.