api: started to migrate EPG functions to the common API
idnode prop: new API for specifying lists

This is to avoid the need for string processing within the C code to combine
and split lists from CSV strings.
api: added channeltag list API call
channel: updated to the new idnode/prop API for fields that represent lists
service: update to new idnode API for lists
support: update config migration script for new idnode lists
htsmsg: add routine to convert a list to a CSV string

Note: this will not work with all lists, only lists of basic types.
idnode prop: make it possible to properly sort/filter enum/list types

This does require a certain level of extra input from prop_t users where
the type is enumerated. A new routine rend() must be implemented to provide
the rendered value (for lists that are not enum, this is done transparently).
service_mapper: added extra (probably redundant) list check
idnode: just a few bits of tidying up
api: updated idnode objects to support new rend() method in prop_t

This allows enumerated (ish) types to now be fully sorted and filtered in
the way you'd expect from the UI.
ui: I have slightly hacked the multi combo to return a list for the form value
webui: started updating the idnode functionality to be cleaner

It's still a mess, but it mostly does the job
extend cwc to act as Mgclient, one port many caids
move detect_card_type to commonly accessible place
descrambler: configure with --enable-dvbcsa flag
Merge remote-tracking branch 'amet/feature/dvb-rewrite_mgclient1' into feature/dvb-rewrite
cwc: added missing free() to stop memory leak
linuxdvb: honour the autodiscovery option