added ability to teardown tcp connection pool and reconenct

Ignore-this: f720ea3cac450d1f8b01effecea0c769

This is to support the case where you loose your internet connection and run out of outgoing connections in the pool for connecting to a greeter

darcs-hash:20131102135913-c21fe-999f0e560e0cbf8a1d6f2bcd7c9cb593225e4a90
didn't catch'em all

Ignore-this: d5a33f33545c4972f126c8934e4c6dc9

darcs-hash:20131102140125-c21fe-29b8a06259d93625ef917e850d89bc4e053575dd
updated userservice to manage a new state called CONNECTING

Ignore-this: ba4f91655be741b3f92da62ae5eaa65e

Now that we try to reconnect to disconnected users we the logic for connecting changed slightly. There is now a new state called connecting and a user is connected once a valid ping comes in after DH session is established. This means a user is onlyu connected once an agreed upon DH shared secret is agreed upon.

The the downside is that there is now a delay between OFFLINE and CONNECTED state.

darcs-hash:20131102140145-c21fe-f521ceb8426c7f62fc9518795b7fe41aa4fa6c51