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
Add basic spec for token map
Add documentation to Token module
Add module header to DHT Messages
Add default instance for NodeAddr
Rename HashArray to HashList.

Hash list is well established name for this kind of objects. Also
`hash array' sometimes refer for `hash table's but not `hash list's.