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.

Return an empty dictionary, say no to null checks.