Sort out whether FastString should always be Utf-8 encoded bytestrings
There are a few functions in the FastString interface which can be used to make a FastString but they don't agree about UTF-8 encoding.
For example, mkFastString :: String -> ByteString does UTF-8 encode the string but mkFastStringByteString just assumes the string is already UTF-8 encoded. It's not clear to me that all of the calls to mkFastStringByteString obey this.
For example, the call in CoreOpt looks like it could be subtly wrong.
Another question, do we always want to UTF-8 encode FastStrings? Does this sort of thing matter in the code generator where all the strings are z-encoded anyway.