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 don't think we should rely on an assertion to avoid an infinite loop. Please throw a real exception mentioning that this is an implementation limitation of Scala.js and should be filed as a bug.