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().
Yeah, about that, even the JDK is buggy. It will answer true as soon as ´in.ready()`, i.e., even for `in.available() == 1`. It even seems that the JavaDoc supports this issue as the normal behavior:

> An InputStreamReader is ready if its input buffer is not empty, or if bytes are available to be read from the underlying byte stream.

https://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#ready%28%29