Added TCP socket timeout and fixed duplicate entires in devices tab

Updated the io project to set a timeout on the socket connector. I also changed when the connection is made so that the SocketConnector class properly triggers an state change event when the connection fails. I also updated the ConnectedDeviceListAdapter so that it does not allow duplicate entries.