Merge pull request #3668 from jmarshallnz/skin_position_fix

Skin position fix
Add Utf8Utils.h/.cpp with class for UTF-8 string manipulations
RegExp: put more data to log on UTF-8 errors
[addons] fix TranslateSingleString to be more robust to badly formatted strings
[pvr] fixes GetDirectoryFromPath() - don't consider slashes as first character
URIUtils::RemoveExtension didn't account for slashes after an extension, so could chop everything after the period in paths like /some/path.foo/some/other/folders/
Merge pull request #3670 from jmarshallnz/find_fixes

Find fixes
Don't flicker infomanager strings.

Just use the old values unless we're really busy.
[url] don't run ValidatePath() on hostnames where the protocol has an encoded hostname. fixes #14699
[transforms] cleanup the transform stack to eliminate unnecessary copies.
[transforms] extend the UI transform with the font scaling amounts
[subs] scale subs rendered with our UI stuff correctly when in windowed mode
Merge pull request #3626 from jmarshallnz/subs_ui_scaling

Fix subtitle scaling for text based subs during windowed video playback
fix incorrect time interval comparison in 8e2f2de2015684246603224d4ad8fc9035178307
CPUInfo: additional cleanup for CPU string
Merge pull request #3658 from koying/fixdroidmousewheel

FIX: [droid] Handle mouse wheel
Merge pull request #3664 from koying/quickpr

FIX: [droid] do not package non-standard joystick keymap
Implement a window ID cache

In the course of each refresh of the visibility of controls (which is
performed every frame), there are many calls to CGUIWindowManager::GetWindow
to convert from a window's integer ID to a pointer to the corresponding
CGUIWindow pointer. This involves acquiring a lock and performing a tree walk.
Yet in practice, the same ID is looked up many times in succession, so this
benefits from a simple cache of the most recently checked ID.

I measured the effect while the Videos window of the default skin was open
(but idle) on a Raspberry Pi, and this simple change alone reduced the CPU
usage by 1.5% from 46.6% to 45.1%:

          Before          After
          Mean   StdDev   Mean   StdDev  Confidence  Change
IdleCPU%  46.6   0.9      45.1   1.2     99.8%       +3.3%
[vfs] remove win32 code from SmbFile.h/.cpp
[vfs] remove win32 code from SMBDirectory.cpp