add dht.announce() which announces to the DHT
remove portfinder

portfinder doesn’t actually check for free udp ports, so just defer to
the built-in socket.bind() function to pick a random port
add debug statements to every important method
change bootstrap timeout to 10000
make 'ready' event and _bootstrap() always async
if call method after dht is destroyed, call callback with error
fix inconsistent hex/buffer infohash usage
when doing lookup or send, listen first
improve clarity of 'ready' test
remove used constant
store peer when receive announce_peer message
comment cleanup
never add ourselves to a routing table
update readme with new 'announce' event
add new seen nodes to table *before* calling handlers
fix functionality error detected by jshint
only save tables from get_peers lookups
find_node should always return K nodes, even when exact match exists
store torrent addr, not dht addr into DHT
fix tests for new routing table behavior