uridownloader: use buffer lists to store fragment data

The maximum number of GstMemory blocks in a GstBuffer is 16, and
appending a 17th block triggers a merge of all GstMemory blocks to a
single block. For a large downloaded fragment this means a lot of
memcpys are going to happen.

To avoid copies, switch to GstBufferList to store downloaded buffers,
but still merge the buffers until the maximum number of memory blocks is
reached.

The gst_fragment_get_buffer function is still left for compatibility or
simplicity. It allocates a single buffer and copies the full content of
the buffer list in this new buffer.
hlsdemux: work with buffer list in fragments for better performance

The decryption process now works in-place in the buffer list.
hlsdemux: schedule next update based on the fragment duration
hlsdemux: check caps are valid before using them
hlsdemux: improve measure of average bitrate

Start logging time when we receive the first buffer and not before
as we don't want to take in account the time to setup the pipeline,
which is very high compared to download time for small buffers.
hlsdemux: add support for playlists with byte-ranges
hlsdemux: fix duration parsing

Use locale independant g_ascii_strtod function to parse floating point
duration.
hlsdemux: don't recreate the pad on new segments, only if caps changed
hlsdemux: log fragment timestamp