This was caused by path_len including the nul-terminator and so the rest
of the string was being added after the nul-terminator, which is
incorrect. This is fixed by making path_len not include the nul-terminator.
Also fix a few other issues with the function, like not passing a
correct length into the second call to WideCharToMultiByte, nRequired
being calculated incorrectly and the string not always being nul-terminated.
Add a test for this function by testing the lpszLocalFileName field
obtained from RetrieveUrlCacheEntryFileA.