Simply return NULL when these methods are called.
If not implemented, calling these methods may result
in crash when the subclasses haven't implemented them.
And adapt to changes
It's easier to track changes if we are using GListModel than
a GList. Also, eventually we shall have multiple providers,
and we can use GtkFlattenListModel to merge multiple origins
without manually managing pointers ourself.
Since several widgets has APIs to handle GListModels, it will
also help us create widgets from GListModels easily.
Modems being added or removed were not working. To fix this, we pay
attention to the "object-removed" event and not just
"interface-removed".
Also, to deal with ModemManager appearing and vanishing, we add a
GDBus watch on ModemManager's D-Bus object.
Finally, we provide appropriate UI feedback when it's not possible to
make a call.
Closes#15Closes#16