AlbumArtCache: cleanup the public interface and correct the filenames

Almost always, the user of AlbumArtCache wants to lookup the image
in cache or trigger a resolve operation and fetch from the network.
Also, sometimes the API user is interested in the cached path too
(for example to send to another app).
Naturally, for that to work we need to ensure that PNG thumbnails
end up with .png, not .jpeg. For us it works because we use
gdk_pixbuf_new_from_stream(), which uses sniffing exclusively.

https://bugzilla.gnome.org/show_bug.cgi?id=702377
Player: make it observable from the outside

Add a public "playing" property, which wraps the Gst state in
a high livel boolean, and add signals to monitor playing state
and current track.

https://bugzilla.gnome.org/show_bug.cgi?id=702377
player: don't connect to GstPlaybin::about-to-finish

The signal is emitted from a GStreamer worker thread, but gjs
is not thread safe and cannot run on different threads.

https://bugzilla.gnome.org/show_bug.cgi?id=702607
player: clean up and restructure playlist handling

We won't have get a GstMessage for state NULL, because that state
change is immediate, and the pipeline on its own goes PAUSED, not
NULL, at eos.
We can therefore take advantage of that to make all track changes
explicit in the message::eos, playNext or playPrevious().
There should be no functional changes.

https://bugzilla.gnome.org/show_bug.cgi?id=702607
player: consolidate and cleanup the code handling the repeat button

We can get a lot less code with a GSettingsAction and GMenuModel
watching it. And we get persistency for free.

https://bugzilla.gnome.org/show_bug.cgi?id=702607
tests: don't check for button status, this depends on settings
Use headerbar

https://bugzilla.gnome.org/show_bug.cgi?id=702822
Fix for latest update on libgd

https://bugzilla.gnome.org/show_bug.cgi?id=702822
Do not get the spinner rendered

https://bugzilla.gnome.org/show_bug.cgi?id=702822
Implemented Shuffle
Fixed now playing icon for Songs view