Fix TCP Socket options

We want binary sockets and we do not want active sockets.
Provide correct return values from gen_fsm's
Fix a dialyzer error: the queue missed a parameter.

Simple fix. Provide the queue as input.
When handling packets, allow the packet handler to fail.
Use the cookie packet for peer information only.

The code assumed we already had access to a peer public key, EC. But this public key
is packed up inside the cookie and the application is explicitly made such that an enemy
can't store state in our end. A future version of the application might delay process generation
for instance.

Once we have checked the vouch packet, however, store the peer_public_key into the
state of the process for future reference.
Calculate a nonce for the box and use that.

The nonce for the cookie is created from the same safe_nonce as the minute key.
But we passed a too small nonce down to the enacl code. Fix this.
When expecting a hello packet, do not wait indefinitely.

5000ms is as good as any number for now.