unicode support for stream metadata

It uses wide strings (std::wstring) instead of narrow strings (std::string).
Not the most ideal implementation, could've used ICU or libiconv, though. Unfortunately both require a lot more effort to get it working on iOS.