Move Windows unicode read-code into the OS specific layer

The implementation of vmi_read_unicode_str is OS specific but the location of the code has not reflected this fact. This PR moves the unicode read-code into the OS layer so that the library is more consistent internally. The OS independent portion of unicode conversion code is moved into convenience.c as that is a more logical location for it.