Add some dev scripts
Add tests for instance Serialize IP
Use proper address family when creating Socket from (PeerAddr IP)
Merge branch 'master' into dev
Turns out network's send/recv do use GHC's fd manager stuff
Run bittorrent-client in res/ so it can seed the testfile
Merge branch 'master' into dev
Merge branch 'master' into dev

Conflicts:
	TODO.org
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