autogen: Download fluendo common build tools if not already there
flutsmpeg: Adjust time (base time) before feeding to indexer rather than after

This means that there is less information required on the "seeker" side
of the equation and should make it easier to handle PCR wrapping.  On the
down-side it is no longer possible to derive the buffer timestamp from
the contents of the buffer.
flucache: Add gst_shifter_cache_get_total_bytes_received

This will make it possible for flutsbase to find the total number of
bytes in the buffer rather than having to rely on derived classes doing
it allowing BYTES based seek events to be handled by the base class.
flutsbase: Only pass TIME based seeks to derived class
flutsmpeg: Don't rely on ts->last_time in flumpegshifter_seek

It belongs to the sink side of the element which I am attempting to
separate from the src side on which seeking is implemented.
flutsbase: Remove virtual function update_segment

Mapping from BYTES to TIME can be accomplished solely using the index
which the base class has access to.  This means we don't need to call
the any derived class virtual functions and makes seeking, and thus
the src side of the element more independent from the sink (indexing)
side.
flutsbase: Initialise segment on seeker side rather than indexer side
flutsbase: Add index property

This will allow us to get and set the index such that it can be
shared with other elements.  This is part of an effort to split
the timeshifter into multiple elements which do one thing and one
thing well.
Add timeshiftseeker element

The timeshiftseeker element is part of an effort to split the
timeshifter into multiple elements such that the indexing/seeking/
ringbuffer can be reused independently.  It is currently an empty
shell which just passes buffers and events through verbatim but
code will be moved into it.

timeshiftseeker will be responsible for doing TIME->BYTES conversion
on upstream seek events and BYTES->TIME conversion on downstream
segment events based upon an index generated externally to the
element.
flutsmpegbin: Add seeker to bin
timeshiftseeker: Add index property to seeker

This will allow us to share the index between this element and
others.
Don't leak objects if mpegshifterbin init fails
tsbin: Create index for timeshifter/seeker in bin

This allows us to share the index between different elements.
Remove index writer IDs from index API

GstIndex has a concept of "writer IDs".  My best guess is that back
in the day a single index would be shared between all streams.  This
is not the case in the timeshifter.  We share indices between
different elements by having our containing bin element
(mpegshifterbin) create the index and set it on each of our elements
as properties.  Writer IDs get in the way of this as to do real
sharing we would also have to pass a writer ID in as a property.

This commit removes the concept of writer IDs from the index class
by storing the ID in the index class itself.  This is not a real
solution as all of the implementation complexity is still present in
the index class.  Longer term I would like to replace the index
class with something much less complex so I don't fancy doing
anything about this right now.
timeshiftseeker: Move SEEK event TIME->BYTES conversion into seeker
timeshiftseeker: Move BYTES->TIME segment conversion into seeker
Add timeshifttsindexer
Add indexer to bin
timeshiftindexer: Move indexing into timeshiftindexer element

This commit completes moving all of the stream-specific and TIME
knowledge out of flutsbase making flutsbase just a simple BYTES
based circular buffer.  It could now be replaced by a queue2 to
reduce duplication.
video-player: Add "Stop" button which returns the video to live