Album art cache rewrite

**NOTE THAT THIS IS NOT READY FOR MERGE YET**
This needs a lot of testing and feedback, so I created a pull request even if it's not yet ready.

This is supposed to fix the random crashes of GNOME Music because of nested methods. Then it ended up being a rewrite. I also merged lookup and resolving, because they are related anyway, and resolve is actually tried afterwards by users of lookup - having them separate only complicates things. If this proposal is accepted, I'll squash the related commits.

Unfortunately, this doesn't fully fix the problem - most of these random crashes are caused by grilo.tracker.resolve used to resolve the thumbnail url - but I don't know why this happens. Maybe, it's because albums are media boxes instead of audio objects of grilo? I'm still investigating it.

Also, I added a data parameter to the three affected methods, so that we could remove the other nested methods if necessary.

By the way, the first commit is kind of unrelated, but it is a small commit anyway, so I just added it here. Feel free to commit it separately if it's possible, so that it won't get delayed with the rest.

Error message for crashes fixed by this pull request:
```
(gnome-music:31519): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed

(gnome-music:31519): GLib-GObject-CRITICAL **: g_object_set_qdata_full: assertion 'G_IS_OBJECT (object)' failed
Segmentation fault
```