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 think in cases like this using `List<Object>` as argument type makes more sense. right now it wouldn't be obvious when looking at a caller when other arguments end and "parameters" start.

eg. 

`new JsonRpcRequestBuilder('http://indexer.com','SEARCH', 'TVShows', 1, 3)`

vs 
`new JsonRpcRequestBuilder('http://indexer.com','SEARCH',new[]{'TVSHows', 1, 3})`