Dl tracking

This got a bit bigger than I expected, and there is still more I want to do.

Main changes: 
- made `DownloadTrackingService` dumber/simpler
- updated `CompletedDownloadServiceFixture` to test the subject directly rather than through `DownloadTrackingService`
- renamed `DownloadClientId` to `GrabId`
- renamed `TrackedDownloadState` to `TrackedDownloadStage`
- added `History.GrabId`, I'm thinking we should make it an actual column, so dealing with it gets a bit easier, also we would be able to query based on it rather than loading the whole history in memory.

@markus101 @Taloth 

Don't call CDH from here. you'll run CDH every 30 seconds via a Queue API call, and whenever a new browser session opens. 
And possibly doing a 30s+ network file transfer during an series/season import while the user waits for the UI to refresh.
It's why I kept fetching the DownloadItems from the client and doing our tracking stuff separate from the Check for Failed/Completed downloads process. Allowing us to update stuff like Eta more frequently without doing actual processing.