Always call clientDisconnected to avoid race.

Call clientDisconnected on all registered listeners on disconnection.
Always print to server log when disconnection detected to aid debugging.
Use ExecutorService per NGInputStream instance to enable test isolation.