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

(This sort of info should be added as a comment.) This is a discriminated union between the several possible kinds of FS paths. There's a comment I made with some design notes influencing this: https://github.com/citra-emu/citra/pull/183#discussion_r19855212

Basically, the tradeoff is between keeping a reference to the raw buffer and converting when you call `Get*` or allocating and converting when you construct the object. Ideally the 4 storage types would share space inside the object, but C++ doesn't make that easy, and the empty members are cheap anyway. (They don't allocate unless you add something to them.) Importantly, this side-steps a lifetime hazard where someone constructs FS_Path expecting it to copy the buffer into itself, when it's really a reference.