Support for UDP trackers

Created an interface for trackers, and separated existing implementation into HttpTracker, and added UdpTracker.
You could wrap the HttpTracker creation in an else statement; and then remove the duplicated infoHash, quit channel, copy and return calls.