timeshift: early prototype of the new timeshift feature.

Currently this supports pause/resume, and speed control. FF up to 4x uses
full frame output, faster than that or reverse uses i-frame only output.
This causes problems with some players and needs work.

Also buffers are done at the subscription level which means the disk space
is not shared even if it holds the same content. And more importantly
this means you cannot yet record the timeshift buffer like on a standard
PVR.
timeshift: Ensure subscription directory is removed.
timeshift: Split timeshift_index_t in two separate datatypes.
timeshift: Use more specific type for timeshift_index_data_t.data.
timeshift: Remove redundant (and faulty) code.

This appears to have been left in place from an older implementation. Ultimately the call to pthread_join will operate on uninit'd memory and could in certain circumstances cause a crash.

Thanks goes to Seri Al-Najjar <salnajjar@gmail.com> for spotting this.
timeshift: reworked the configuration

general config stuff has now been removed and a new timeshift tab has been created
timeshift: fix use after free() bug.
timeshift: add unlimited size/period options.
timeshift: remove debug left in my mistake.
timeshift: Ensure unlimited period flag is obeyed.
timeshift: Added on-demand buffer mode.

In this mode data will only be written to disk when paused and anything
in the buffer prior to the current play point will immediately be removed.

This implies that rewinding is never possible in this mode (though FF is)
and trying to do so will result in the buffer playback being paused.
Fix #1471 - add explicit type cast.
timeshift: Reworked the reader engine to common up things and prepare for seek support.
timeshift: remove unused/incomplete code.
timeshift: add new style capability check.