std: Free channel groups from device instances as well.
demo: Free analog channel groups when done with them.

This fixes a memory leak.
C++: Centralise code for preparing shared pointers.
C++: Add internal lookup to find Channel object from sr_channel *.
C++: Fix Packet destructor for packets without payload.
C++: Fix leak of GVariant in ConfigKey::parse_string().
bindings: Overhaul packet & payload classes.
bindings: Support get_channel_groups() on base Device class.
bindings: Revise Session::append() API.
bindings: Change return type of config_list to Glib::VariantContainerBase.
bindings: Add Device::get_description() method.
bindings: Add Channel::get_index() method.