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().
I'd prefer you not make any assumptions about `maxBytesPerChar`. Do either of:

1. Drop `in.available() >= 4`
2. Try to create an encoder and query its `maxBytesPerChar` (if the charset supports encoding).