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.

Potentially yes, but in other cases the url consists of conditional parts. (I commented on that on the other PR) So I couldn't quickly think of a clean solution to left it for now.
I'm thinking about using HttpRequestBuilder and add support for AddQueryParam to that so you can kinda construct the request like StringBuilder.