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.
[ios/atv2] - harmonize the behaviour of builtin "shutdownmenu" - it should behave the same on all platforms now that the shutdownmenu only has usefull entries
[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.
mpegts: revert old change for NOHEADER, we will handle it on PMT instead
[pvr] fix: wrong condition while getting first/last epg date
changed: function parameter should be passed by reference
removed: the extra qualification 'CSysInfo::' is unnecessary
fixed: the parent class already defines a member variable m_processing but of different type. renamed it to avoid confusion.
removed: member variable already defined in parent class.
changed: rename critsection variable to prevent confusion with the cs variable from the parent class.
changed: use empty() instead of size()
[fix] Aspect ration constructor parameter was being ignored and the member variable was uninitialized. Fixes #14753
Merge pull request #3833 from jimfcarroll/fix-14753

[fix] Aspect ratio constructor parameter for ControlImage was being ignored.