Ensure that DVD subpictures that don't explicitly set the 'end' time are still shown. Also, handle 'CHG_COLCON' command by skipping over the data. This should prevent any issues caused by incorrectly interpreting the data as subpicture commands.

Fixes #11455
Fix filtering, sorting and selection of DVD audio streams when the mapping in a PGC is not 1:1, which was broken due to different functions/methods providing or requiring a physical stream ID, logical track number or logical index, with little consistency between them, and 'disabled' streams not being filtered out.

DVDRingBuffer now returns and expects an index into the PGC_AST_CTL table for all audio stream methods, with GetAudioTrackNum now providing a mapping from physical stream ID to logical index.

The MythTV-specific change to vm_get_audio_stream in vm.c has been reverted as it didn't work as intended and the intended functionality is now in DVDRingBuffer::GetAudioTrackNum.

Fixes #11376
Add DVD context class to encapsulate the state of the DVD VM so that this can be decoupled from the ringbuffer. As the decoder and player lag the ringbuffer by up to a second or more, this will allow them to base their operation on the DVD state at the time any given frame was read and not on the 'current' state, which may well not be the same.

This change adds no real functionality but implements the base functionality to be built on in further commits.

Refs #11579
Added more consistent handling of slide shows (i.e. individual video frames to be shown until the next video frame appears in the stream). This allows correct playback of still frames with or without audio regardless of domain (previously still frames with audio was only handled in a menu), so this change allows audio DVDs to be played.

Refs #11579
Handle seeking within slideshows.

As slideshows only contain a single video frame to be displayed for an arbitary amount of time along with audio, seeking can cause issues as you may jump over the frame to be displayed.

Using an audio DVD of classical music as an example:

1. Each movement contains a single video frame at the beginning.
2. The second movement has just begun and the user skips back several seconds to the end of the first movement.
3. This change detects that a different video frame should be displayed and jumps back further to retrieve the video frame and, once retrieved, returns to the original position to continue playback.

Closes #11579
Implement DVD bookmarks by saving and restoring the full DVD VM's state to make playback from bookmarks more reliable for all DVDs.

The state snapshot code is borrowed/adapted from or inspired by XBMC and Ogle.

Existing bookmarks are supported but will be converted if stored again.

Fixes #11609