Merge pull request #37 from nictuku/master

Use the new DHT API
Implement BEP 12 Multitracker Metadata Extension

See http://www.bittorrent.org/beps/bep_0012.html
Support IPV6 trackers.

Implemented BEP 7 "IPv6 Tracker Extension"

Tested with http://ipv6.torrent.ubuntu.com/

To test IPv6 using the ubuntu torrents I had to manually modify
startTrackerClient() to skip the first level of the announce list. The
Ubuntu torrents use an IPv4 tracker as the first level tracker, and
only use ipv6.torrent.ubuntu.com as the second level tracker.
Implement lpd

As should be defined in BEP-0014 (still TBD)

Basically, for each torrent we are in, a HTTP-like message is sent to
239.192.152.143:6771. This message is an announcement that we are in
the swarm.

When a Taipei-Torrent peer receives such a message, it will
automatically connect unless it's already connected.

Tested successfully with aria2c and transmission.
Fix multiple tidbits

- Remove infohash from activeAnnounces map when we stop it
- Move useLPD flag to lpd.go and set it to false by default
- Really set the ticker to 5 minutes
- Use a default value for the lpd struct in main.go so we can use
  lpd.announces in the select loop
Merge pull request #39 from rakoo/add-lpd

Implement lpd
Fix type in spelling of 'ut_metadata'
Merge pull request #40 from Aaron1011/fix_metadata

Fix type in spelling of 'ut_metadata'
Add tags to XML-related structs
Merge pull request #43 from Aaron1011/fix_xml

Add tags to XML-related structs
Improve UPnP support
Run go fmt
Some UPnP servers return a space in front of the location URL.

(Ubiquiti EdgeRouter Lite v 1.4.1, for example.)
Improve the way we get the local IP address.

Previously we did a reverse lookup our hostname, which fails if the
device does not have a host name.

Now we iterate through our network interfaces looking for the first one
that is IPv4 and not a loopback address.

See this golang thread for discussion:

https://groups.google.com/d/msg/golang-nuts/WXKmB1MI-6g/X6CQzqzuC4YJ
Check error result of http request.
Separate code into package 'torrent'
Use "torrent" package name in main.go file too.
Update README.md

Add G+ discussion group URL.
Remove reference to my Taipei Torrent fork.

It's not really active right now.
Added UDP tracker support.

See http://www.bittorrent.org/beps/bep_0015.html

Adjust types for tracker response. Use unsigned variables where
appropriate.
Handle port as uint16