Thinking about it, since `UTF8String` on a `Vector{UInt8}`, and `UTF16String` on a `Vector{UInt16}` both create a mutable string, it would seem that `UTF32String` should be changed
to also accept `Vector{UInt32}` as well as `Vector{Char}` without copying.
*However*, it seems that none of these constructors should work without copying (yes, I'm aware that a lot of code that merrily builds a vector and then "converts" it to a string would have to change). Having these this way means that people can easily create mutable strings without even knowing about it, and that code operating on strings can't depend
on strings being immutable... Since this is a common way of constructing strings, it seems rather dangerous.
Is there some way to have an "unsafe" constructor, that could be used in the places where a vector is built, and it is returned as a string, so that there aren't any aliases?