Merge pull request #3255 from ace20022/fix_replace

[Fix][StringUtils] Prevent infinite loop or crash.
add subtitles extension list and allow to remove it using URIUtils::RemoveExtension
add CUtil::GetExternalStreamNameAndLangFromFilename method to extract stream language and name from filename
use CUtil::GetExternalStreamNameAndLangFromFilename to determine external subtitles's language and name
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
Use a three char codes. These are also used for the subtitle priority evaluation, cf. PredicateSubtitlePriority(...) at DVDPlayer.cpp.
The name of a stream should not be set to its language.
[FileInfo/Thumbs/Ext. Subs] Add language retrival from external subs while extracting thumbs.
[DVDPlayer/DVDFileInfo] Add external subs' details while updating stream details from player.
[DVDPlayer] Use the info extracted from filename for external vobsub if necessary.
Try to extract a flag, e.g., forced, from a subtitle's filename. Furthermore use a struct to retrieve the info (name, language, flag).
save
new attempt
new new
test