Fix the artwork fetcher exceptions

HttpClient returns a HttpRequestException, not a WebException (Thanks MS for not documenting exceptions on async methods)

Additionaly, the release id lookup can fail with a "Not Found" status, which is completely valid in this case, so don't throw an exception and just return null.
Just return the cache key when fetcghing an artwork online
Release the semapohre if we return early
Release the semaphore under all circumstances and queue all cache operations
Properly escape the search query
Only release the semaphore if an exception is thrown
Introduce the actual method to kick off the artwork lookup