ArtworkManager: prevent wrong inclusion of null artwork_id in cache

The public method LookupScaleSurface(_,size,_) of ArtworkManager class
calls another public method called LookupScalePixbuf(_,size). The latter
was in charge of adding cached null artwork_ids to prevent subsequent
slow lookups, however:

1) If an invalid (as in, too small) size was specified, a null value was
also returned by the callee LookupScalePixbuf().
2) The caller LookupScaleSurface() was *also* inserting to null_artwork_ids
when receiving a null value from LookupScalePixbuf().

The consequence of the above was: if an invalid size ( < 10) was requested
for a *valid* artwork_id, the cache would fill a null value for it, and all
subsequent requests (even the ones with valid sizes) would receive null.

The user-visible consequence of this was cover art not rendering in widgets
such as ClassicTrackInfoDisplay or others. Surprisingly, this bug was more
likely to be hit in the gtk3 branch when the NotificationArea extension was
enabled, and not in the master branch (gtk2) or when this extension was
disabled.

The solution, implemented in this commit, is:
- Stop querying the null_artwork_ids cache from the caller.
- Stop adding elements to the null_artwork_ids cache in the caller.
- Move from the caller the only scenario not covered by the callee,
about checking if the pixbuf's Handle is IntPtr.Zero.
- Add some comments clarifying some absences of null_artwork_ids
manipulation.

A unit test is also added for the bug (which failed before this fix,
and passes now), as an extra layer of protection against future
regressions. This unit test uses one of the embedded resources (PNG)
that are already inside the Banshee.ThickClient assembly to provide
dummy cover art.
SourceManager: avoid warnings when shutting down (bgo#709376)

When shutting down banshee while a track is being played, the disposal
of the SourceManager instance was causing a NRE, which was printed as
a Warning in the console. The culprit of the NRE consisted on the class
FileSystemQueue trying to access SourceManager.MusicLibrary property
in the Dispose() method to unsubscribe from some events, but MusicLibrary
property had already been set to null by SourceManager's Dispose() method.

The solution is simply to delay the assignment of null values to these
properties to *after* the SourceManager children sources have been disposed.

This wasn't causing a crash or anything severe, but it's good that we get
rid of the noise that it was generating.