Decoding ByteStrings to Text

All of the single-parameter functions for decoding bytestrings
encoded in one of the Unicode Transformation Formats (UTF) operate
in a strict mode: each will throw an exception if given invalid
input.

Each function has a variant, whose name is suffixed with -With,
that gives greater control over the handling of decoding errors.
For instance, decodeUtf8 will throw an exception, but
decodeUtf8With allows the programmer to determine what to do on a
decoding error.