ADD: "last played" sort option to TV Show GUI
dvdplayer: pass display time through a/v players before out to application

This gives proper display of time to outside world, taking queues into
account and allow seeks to end up where the user expected it to in the
case of input streams which provide time at demux.
dvdplayer: fixed time_offset is difference between adjusted pts and time
dvdplayer: allow 200ms of automatic time update instead of 1ms

It was originally meant to allow 1 second. But has at some point
been broken since the unit has been changed from ms to dvd time
Revert "[pvr] fixed - seek passed the time since the epg item started, which won't work for seek operations"

This reverts commit c1f11e6580f8b9ede2637a6981c6f7e53b60dff1.
Change GUIWindowManager.SendMessage(msg, winid) to handle window id 0 condition,
which sent by CApplicationMessenger::SendGUIMessage by if no window id specified.
Add autopool for IOSKeyboard main function, in case it is called
from somewhere no pool was set.
In callback method of ShowAndGetInput, send messages in safe way, maybe it is called
from non xbmc main thread.
only change get text when confirmed like generic keyboard did.
[rbp] Avoid blocking the video thread keeping the video fifo full.
OpenMAX IL is an asynchronous media player. The key to getting good performance is to ensure the audio and video fifo have sufficient data to withstand any processing spikes by the ARM.
Ideally the fifos would allow the arm to crash, and video and audio playback to continue smoothly for a couple of seconds.

I've examined the fifo behaviour, and found the video fifo is always almost empty. (The audio fifo is full).
It turns out that the PlayerVideo task (which submits video frames to GPU fifo) blocks until the presentation time has arrived before calling FlipPage (in order to keep subtitles etc. synced).
This is very bad. We generally only one frame of video data in the GPU fifo. This means a spike in ARM workload (e.g. bringing up OSD, or a peak in bitrate) causes the fifo to empty and video to stutter.

The patch here avoids blocking, and lets the FlipPage happen on a later packet.
I've found with this patch, my test clip (1080p with software DTS audio decode) I can play without stuttering at 700MHz. Without this patch it fails to play even at 1000MHz.
Python interface now use native keyboard from keyboard factory.
handle IOSKeyboard::Cancel() in more thread-safe way.
smartplaylists: replace strcmpi with StringUtils::EqualsNoCase
smartplaylists: refactor XML reading/writing
smartplaylists: use XMLUtils where possible
smartplaylists: use a browseable property for fields instead of extra types
smartplaylists: cosmetics
[win32] cleanup VS project files

Karaoke related files were in the wrong place of the directory hierarchy.
Add a DelayedCallGuard to the RenderCapture.waitForCaptureStateChangeEvent. Closes #14044
Merge pull request #2161 from Montellese/xsp_cleanup

smartplaylists: some cleanup