ConnectCallback needs to call EndConnect

Using Socket.ConnectAsync to connect to a non-listening server, offline server, or anything generating an error always results in the SocketAsyncEventArgs.SocketError being SocketSuccess in the "Completed" event.

Socket.ConnectAsync uses BeginConnect, and ends here in ConnectCallback. It needs to call EndConnect so any error can be propagated up.