No reason to make identifier for worker threads
Fixed bugs where listeners was not initalized, and Sender was not
started. Add checking for null listeners before trying to use them.
Added a little bit of time spacing between test sends to ensure they go
in the correct order.
Added boolean running field to prevent miss-use when the Sender was not
started.
Removed Sender field, since each client does not need its own sender.
Added checking for sockets.isOpen() to handle when the socket was closed
by the client.
Added handling for clients disconnecting. Added broadcast() method.
Received messages are now sent to all clients. Added a Sender field so
that message can be sent to clients.