automatically NULL-terminate UTF16 data for passing to Windows APIs

As discussed in #7008, this changes the `UTF16String` type to automatically append a NULL word at the end of its data (upon `utf16(x)` conversions, or to require it in the constructor).  This is not treated as part of the string for iteration etcetera, but allows the string to be passed directly to Windows (and similar) API functions expecting NULL-terminated UTF-16 data.

Rationale: the main reason for the `UTF16String` type is for calling Windows-like APIs, which typically require NULL-terminated data.  A secondary usage is reading UTF-16 encoded files or other data, in which case the overhead of the NULL code unit is almost certainly negligible.   Normal Julia progams will never pass around zillions of small UTF-16 strings.