config: use local strdupa() routine for cross-platform compat.

Spotted by decke
http: possible NULL ptr on shutdown
util: added sbuf_read() to allow reading from FD straight into sbuf
mpegts: ensure scrambled streams are properly handled

If a scrambled has been seen on a "scrambled" channel all further packets
(within the subscription) MUST be processed through the descrambler else we
can end up with out of sequence packets causing CC errors. Relates to #1986
mpegts: reworking of the input threading

I have split the input threading in two. There is now a smaller/faster thread
responisble for reading data from the source device (file/socket/DVB/etc...)
and a potentially slower (though not too slow!) thread for processing.

This ensures that any minor delay in processing (potentially due to unexpected
effects during start/stop, or anything else!) do not unduly impact reading from
the source which could otherwise lead to loss of data.
linuxdvb: upated frontend code to use new mpegts_input API
iptv: update to use new mpegts_input API
tsfile: updated to use new mpegts_input API
subscription: update to changes in mpegts_input API

Really this should not be directly in here, as subscription code shouldn't
need any knowledge of the underlying systems. However its a backdoor into
the full mux.
main: added tsfile_done() call
mpegts: fix TS packet processing that could lead to lost data
linuxdvb: fix file processing to ensure data is passed and efficiently
mpegts: disable the extra input thread

I have decided that this is no longer necessary, however:
a) I like some of the changes introduced, so want to keep them
b) want to keep the option available should I re-evaulate the performance
mpegts: some minor corrections to MPEG-TS packet processing

Relates to #1986
mpegts: fix for PCR extraction (used by tsfile)
linuxdvb: ensure that the enabled flag is properly honoured