A safe way to create and work with a mutable array before returning an
immutable array for later perusal. This function avoids copying
the array before returning it - it uses unsafeFreeze internally, but
this wrapper is a safe interface to that function.

e: the element type of the array. Only certain element types
are supported.

An STUArray will generally be more efficient (in terms of both time
and space) than the equivalent boxed version (STArray) with the same
element type. However, STUArray is strict in its elements - so
don't use STUArray if you require the non-strictness that
STArray provides.

A safe way to create and work with an unboxed mutable array before
returning an immutable array for later perusal. This function
avoids copying the array before returning it - it uses
unsafeFreeze internally, but this wrapper is a safe interface to
that function.