Torrent indexer refactor

@markus101 @kayone 
PURELY for review and discussion purposes.

The torrent-indexer-base includes torrents AND indexer-refactor.
The torrent-indexer-refactor is everything we changed on top of that to make it work.
This PR is between those two branches so we can use a PR to process feedback solely on those changes so we don't have to bother with unrelated code.

I'll leave comments here and there to explain what I did, and where I still have problems with. Once we decide how it should be I'll simply cherry-pick the appropriate code for indexer-refactor.

I've added this because I wanted to be able to specify the Accept header consistently without having to sprinkle the same code everywhere. Figured using these static instances would help being typesafe.
Although I should change the implicit operator to a method, coz that implicit cast kinda defeats the typesafety.