Fanart cleanup

- Create namespace `WaveBox.Core.Derived`, create `TimedWebClient`, which acts exactly like a normal `WebClient` but allows you to set a timeout in milliseconds before it throws a `WebException`
- Add `TimedWebClient` to `ArtistThumbnailDownloadOperation`, with a timeout of 15 seconds, per Ben
- `ScanIds()` now returns the number of successful downloads, for reporting
- Move a couple instance variables inside methods, for cleaner code flow and less global state