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.

The BlockCopy copies the string in 2-byte unicode format. Without an appropriate Content-Type charset= header the remote server won't understand this.
Defaulting to UTF8 is a better choice, but I believe we should use the same method as in the HttpRequest.GetContent method, where we already determine desired encoding.
Should just make that detection method static somewhere and use it in both locations.