What I've found while using dbus-monitor is that playerctl sends a bunch of messages whenever media is changed, with the first one always having the artUrl empty.
If the media does have an artUrl, the next messages will contain the artUrl resulting in artUrl ~= last_artUrl becoming true and triggering another signal
The hacky method in the commit will only trigger a new signal if artUrl is not empty, or on the second message sent (as some media don't provide any art)
* Old playerctl cli backend added as option
* Move files into directory and only require playerctl lib on enable
* Added wrapper functions to select backend based on args
* Switched 'player_stopped' signal to 'no_players' in CLI backend
* Added support for setting interval directly in enable() for CLI backend
* Update docs for both backends