Encode strings with CESU-8

Related to #11.

We need to figure out in which cases (invalid data?) this will raise errors.
Maybe this should be a `Encoding::InvalidByteSequenceError` error type?

```
>> "\xde\xad\xbe\xef".encode("UTF-16LE")
Encoding::InvalidByteSequenceError: "\xBE" on UTF-8
```