[vfs] CFile: remove 'virtual' from destructor
no class is derived from CFile
Respect results of WOA.
load replaygain tags on mp4 style files
load tags when opening file so they are available when we try to read replaygain

provide a fallback file type to tagloader based on content

pass content type to DVDplayer for types that support tags, in order to set a fallback filetype
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
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.
[3d] added 3D subtitle depth
[pvr] fix view mode not being set properly after channel switch under certain
circumstances
[pvr] Fix missing recordings

This fixes an issue with missing recordings that occurs under following
circumstances:

- Recording A in subdirectory "TV Show XY"
- Recording B in subdirectory "TV show xy"

Because of the difference in case, recording B won't show up in any
sub folder. This can happen due to EPG inconsistencies.

The presented sub folders are created with case-insensitive matching
using CFileItemList::Contains in GetSubDirectories.
But when determining if a recording belongs into a directory, the
comparison is case-sensitive (in IsDirectoryMember).

This commit changes the IsDirecroryMember check to be case-insensitive.
[rbp/omxplayer] Avoid segfault when switching fullscreen

Switching fullscreen causes a brief UnregisterAudioCallback/RegsisterAudioCallback.
If this occurs while audio thread is inside VizPacket then we segfault on dereferencing m_pCallback.

Using the m_critSection lock means the higher level test for m_pCallback will protect us.
CUtf8Utils: add "checkStrForUtf8()"
New UTF-8 string check, based on current Unicode standard (6.3), with three result values: plain ASCII, valid UTF-8, high ACSII.
renderer: add underlying support for 16bit textures on gles
renderer: move UploadYV12Texture to same location as in GLES renderer

Simplifies diffing
renderer: match GLES UploadYV12Texture structure with GL version
renderer: calculate source rect on upload GLES:EGL/CVRef/MediaCodec
Utf8Utils: add "isValidUtf8()" for convenient check for valid UTF-8 strings
Remove usage of CharsetConverter.isValidUtf8()