Add support for UTF-16 strings for LowPaths in FS:USER

There needs to be some consideration towards memory management and lifetime here. The paths can either be stored by reference as is now (In which case this might as well be a real pointer, IMO.) or they can be copied into the object somehow. The former is does less memory allocations, the latter makes keeping objects of this type around dangerous if the person that does so is unaware that they can't outlive the current HLE call (or else they might be mutated.)

Similar discussion for the `Get____` methods, if they should return a `std::vector` and `std::string`, or just return a `std::pair<char16_t, size_t>` view into the contents.