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%
Added: HttpProxy parameter for setting proxies on stream urls.
CGUIWindowManagerIdCache now defined within the scope of CGUIWindow.
CGUIWindowManagerIdCache::Get now has a single return value.
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.
[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
Merge pull request #3682 from basrieter/stream_proxy

Added: HttpProxy parameter for setting proxies on stream urls.
mpegts: revert old change for NOHEADER, we will handle it on PMT instead
Merge pull request #3826 from ace20022/init_uninit

[Renderer] Initialize member variables
Merge pull request #3825 from ace20022/aae_ref

[ActiveAE] Function parameter 'format' should be passed by reference.