Handshake implemented

Handshakes are a rewrite of the connection establishment procedure.
Contrary to the "IAddedYou/AddMe"-based procedure, which was a bit too
asynchronous, the new method makes sure both parties are OK before a new
connection is established. This should drastically reduce the amount of
one-sided (zombie) connections, and eliminate excessive connections
from/to a single node because of timing issues.