copy guest list into a separate arraylist, to avoid concurrent modification exception

the onDisconnect method removes each canceled thread from the guest list.  By copying the list before iteration here, it avoids concurrent modifications on that list.  At the end, the guest list should be clear through repeated calls to onDisconnect because all threads should be canceled.