All reading and writing now uses UTF-8.

* Explicitly set encoding of input files to UTF-8.

  * When writing output, do UTF-8 encoding ourselves and then call
    System.IO.Cautiously.writeFileL, which takes a ByteString.  We
    can't use Cautiously.writeFile since it truncates all code points
    to 8 bits.

  Fixes #8.