[win] Fix default value of vertical sync setting from disable to always.
Respect results of WOA.
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%
CGUIWindowManagerIdCache now defined within the scope of CGUIWindow.
CGUIWindowManagerIdCache::Get now has a single return value.
Slightly less bright white which is easier on the eyes.
removed ambiguous m_file in CachingCodec.h
Add auto-scrolling for containers
[rbp] Ensure resolution infos have unique names

Currently the strMode for 2D and 3D resolutions have the same name.
This means the calibration info for a 2D mode can get replaced with a 3D mode
which can result in the pixel aspect ratio being reset to 0.5.

Also when using gui resolution clamping (i.e. 720p gui on 1080p display)
the calibration settings are scaled to gui resolution, but there is no indictation
of what the clamped resolution was when the settings were saved.

This means disabling gui clamping results in a minature gui.
(And I'd like to remove the gui clamping in the future).

Make sure all these resolutions have unique names by adding the gui resolution
and 3DSBS/3DTB to the resolution string.

Note: this will result in current calibration settings being lost.
Avoid using CSettings to create a blank guisettings.xml for a fresh profile.  This causes a segmentation fault as documented in issue #14747.

As the file is created 'fresh' on first login of the profile, there seems to be no consequence in not creating before hand.
[ios/atv2] - harmonize the behaviour of builtin "shutdownmenu" - it should behave the same on all platforms now that the shutdownmenu only has usefull entries
[AML] Fix pts error correction logic
paplayer: fix caching of streams into AE
[AE/CA] Only restore the default format if we ask for it.
[AE/CA] Simplify the ResetAudioDevices code and make sure it actually works

The old code failed to reset devices set in Encoded mode and it was
going about it in a fashion that duplicated a lot of code. This removes
all the custom code and uses already exisisting functions and that
actually makes the code functional.
[ActiveAE] Function parameter 'format' should be passed by reference.
[WinRenderer] Member variable 'CWinRenderer::m_neededBuffers' is not initialized in the constructor.
[BaseRenderer] Member variables 'CBaseRenderer::m_RenderFeaturesCallBackFn' and 'CBaseRenderer::m_RenderFeaturesCallBackCtx' are not initialized in the constructor.
ActiveAE: fix unsigned/signed mismatch
ActiveAE: avoid resampling sounds when not needed
ActiveAE: use quality setting for resampling gui sounds