Interconnect: forgotten else.

The second branch was executed after the data were deleted, thus
accessing invalid memory. However the assertion fired only on Windows
and not on my Linux box, causing this HUGE error to be unnoticed for a
long time.
Utility: don't use std::u32string on Windows.

Currently Windows == MinGW, but as Visual Studio doesn't have Unicode
literals or anything depending on them, this would work there too. Using
std::vector<char32_t> instead, because MinGW (GCC 4.7.2) weirdly fails
while freeing memory after std::u32string. Hopefully this will get fixed
in future releases, as this is PITA to maintain.