Fix get_peers response encoding
Add implied_port field to DHT announce query
Add pending module for routing spec
Add naive session tokens implementation
Update TODO
Fix typo
Remove unused node list serialization
Add node sessions
Fix timestamp comparison
Add pretty instances for NodeInfos
Add logging to DHT
Drop old node if it is not responding
Add routing table shape
Simplify Routing monad
Add instance Alternative Routing
Keep routing table in MVar.

Since table updates is not atomic operations and may perform IO we should
be able to gain /exclusive/ access to the table. Consider insertNode
function:

1) Thread A read table_1;
2) Thread B read table_1;
3) Thread B ping node Z and it does not respond and get removed;
4) Thread B remove node Z from table_1 and get table_2;
5) Thread B put table_2;
6) Thread A insert a new node and get table_3;
4) Thread A put table_3;

The problem is that final table_3 do have the removed node. At the
moment, exclusive access solves this problem.
Fix instance Alternative Routing
Add hashable instances for all address types
Enable all query handlers by default
Fix typo