Change the string node header from unsigned short to wchar_t.
This fixes an alignment problem on GNU/Linux, where wchar_t is four bytes, but short is 2 bytes.
It also makes the code look cleaner by removing a lot of type casting.
This should have no effect on Windows, where wchar_t and short are both 2 bytes.