CLog update (alternative)

This is an alternative for PR #5044.

* Fix some mess in CLog
* Rework win32 part to work directly with win32 File API instead of some strange `_utf8` wrappers
* Move adb printing to the right place
* [win32] Add LogW() for wide string logging
* Add LogFunctions/LogFunctionsW(win32) and companion macros LogF/LogFW(win32) for quick logging with function name: instead of 
```` C++
CLog::Log(LOGDEBUG, "%s: Return code: %i", __FUNCTION__, ret);
````
use
```` C++
CLog::LogF(LOGDEBUG, "Return code: %i", ret);
````
 this will put exactly the same string to the log.
* Added parameter checking for MSVC
* Removed CStdString
TBH it would be cleaner if this was just kept as a static helper class that you included only where you need it (instead of including utils/log.h).  That way you don't need to include it in log.h and you don't need the #define, #undef stuff.

Other than that and the other minors, all that needs to be done is for the testsuites to pass on linux, win32, osx, build test and merge.