Remade the code at tracker so it looks much cleaner.

Will start working at keeping peers, and not hammering the tracker
Changed local ip machine at udp request to 127.0.0.1
Added events on trackers

The client tells the tracker when download stops or completes.

Also govet-ed tracker , bitfield and bencode
Added choke and uninterested at peers

Also added peers mapping
Added peers management and changed requesting to trackers every 3.5 minutes

Also replaced dial with dialTCP because its way faster. Because of this speed doubled
Lots of refactoring and fixes
Incapsulated piece manager , added mutex inside piece_manager , deleted the one from downloader
Added keep alive for connected peers
Pieces are now randomly downloaded. You can also resume downloads
Added transactions, Inserts are slow otherwise in a Sqlite database
added SHA-1 checks + repairs at download end
write blocks to database every once in a while instead of every time a block is written
write blocks to database every once in a while instead of every time a block is written
write pieces only when ready
Reverted code to last stable state
Refactored peer.go
Download should be much more stable. Also added some comments
Made the download much more thread safe by adding peer_manager.go
Re-added hash check for each piece while downloading
Finished some bugs