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.

This is where things start getting interesting. I added this so I can generate valid JSON-RPC requests.
I have to do this because we have seperated the RequestGenerator and the Parser.
I rather had a JsonRpcClient handling the call. Or better yet, just use Castle.DynamicProxy to automatically implement an ```public interface IBroadcastheNetProxy```.
But obviously that is not possible when we have a separate RequestGenerator and Parser.
So I was thinking whether it might be a good idea to leave out the RequestGenerator for BTN and only use a separate Parser class to convert the ```BroadcastheNetTorrent``` instances to ```ReleaseInfo```. See https://github.com/NzbDrone/NzbDrone/pull/117/files#diff-23dd4b1f2dd087153c3d6ba02aa82537R52.