Don't display blank SMB workgroups.
[Fix] Event server code for remote mouse with event client protocol
Faster sorting of CFileItemLists, step 1

CFileItemLists are sorted by first construcing a SortItems object that refers
back to each CFileItem by index, sorting the SortItems object, then rebuilding
CSortItemList::m_items (a vector of pointers to CFileItems) by examination of
the sorted version of the SortItems object.

It might be more sensible, long-term, to sort m_items directly, but in the
meantime, there are a couple of simple ways to make sorting with SortItems
sufficiently efficient that it's not a problem any more.

Previously, SortItems was a vector of SortItem objects, held by value; each
SortItem was a std::map (implemented as a red-black tree) which ended up
being constructed and destructed as each element of SortItems was moved.
This patch changes SortItems to be a vector of pointers to SortItems instead.

Benchmarks for CFileItemList::Sort() on a Raspberry Pi with a library of
600 movies:
Before patch: 4.6 seconds
After patch:  1.1 seconds
Faster sorting of CFileItemLists, step 2

Each time a CFileItemList is sorted, multiple SortItem objects are
constructed and destructed. Each object is a std::map ,implemented as a
red-black tree with one node for each attribute (Field) upon which the
CFileItemList could conceivably have been sorted, even though for any given
SortBy, very few attributes are actually examined by SortUtils::Sort(). Worse
still, many of those nodes involve creating an associated fresh copy of a
string, with all the associated heap thrashing that entails.

This patch changes the various ToSortable methods to limit the number of
items in each SortItem's std::map to those actually required for performing
the chosen sort.

Benchmarks for CFileItemList::Sort() on a Raspberry Pi with a library of
600 movies:
Before patch: 1.1 seconds
After patch:  0.36 seconds
Fix typo in setup of sort-by-album-artist inherited from previous code
add subtitles extension list and allow to remove it using URIUtils::RemoveExtension
add CUtil::GetExternalStreamNameAndLangFromFilename method to extract stream language and name from filename
[DVDPlayer] Use CUtil::GetExternalStreamDetailsFromFilename to determine external subtitles's details.
 These are language, name and flag.
dvdplayer: update current video settings when changing setting subtitles stream to be sure we keep it synced (similiar to what we already do when we show/hide subtitles)
add VideoPlayer.SubtitlesLanguage infolabel that returns full language name of current subtitles, "unknown" localized string or empty string if subtitles are disabled or video isn't playing currently
[FileInfo/Thumbs] Add language retrival from external subs while extracting thumbs.
[DVDPlayer/DVDFileInfo] Add external subs' details while updating stream details from player.
jni: add CJNISurfaceTextureOnFrameAvailableListener
droid: Add Android MediaCodec for DVDPlayer
ActiveAE: fix wrong device name after creating audio device
Log registered repos on AddonManager::Init
AMLPlayer compile was broken after #3280
[WIN32] fixed usage of m_encodedFormat
[WIN32] fixed: m_lastWriteToBuffer wasn't initialized
fixed: missing initialization in HTSPDirectory.cpp