Use separate socket table instead of embedding it in
uip_conn struct. This allows more straightforward
operation when socket is closed as background uIP
thread does not have to wait for socket destruction.
It now just nullifies socket pointer in uip_conn.

Previous design forced uIP thread to wait in
such situation, which caused nasty deadlocks
in some cases.