[UPnP] Call found_server callback on GetServers() results

This was not needed before as GetServers() results were always
handled in __init__() -- so no callbacks could yet exist. Now
with asynchronous GetServers() handling this is no longer true.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[GenericModel] Add abstract GenericModel._fetch_items()

This seems like a good practice and silences a pychecker warning.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[Gtk] Upgrade to Gtk+3, GStreamer 1.0 and python-gi

This includes:
* Player (manual) drawing changed to use Cairo
* GenericModel now directly inherits from TreeModel
* lots of syntax changes

Fixes #13.
Fixes #14.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[UPnP] Do not make duplicate found_server_callback() calls

Use the same code for GetServers() callback and the FoundServer
handler: GetServers() code path wasn't checking for existing servers,
so duplicates could appear with good timing.

Also mark signal handlers as 'private' methods.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[MainWindow] Set "dLeyna-control" as the window title

Fixes #15.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[Model] Reset requested range on flush()

Without this flush() won't result in a re-fetch as it should.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[UPnP] Add Server-abstraction, use it in MainWindow

Add the whole Server-object into the server-liststore:
This way we don't need to add new columns when we need to use new
properties like SortCaps.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[MainWindow] Set columns clickable only if they are sortable

Fixes #24 (although whether "unclickable" means "greyed out" depends
on the theme).

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>