Close ping handler's executor service properly

For each ping collect phase a send ping listener with a executor service is created. 
If there in flight ping rounds while a node shutdowns this executor service isn't shutdown correctly leaving threads behind.

This PR keeps track of this send ping handlers and closes the executor service. Also the thread pool is now final in SendPingsHandler. There was a possibility that multiple executor service could be created if during the close call the variable was set to null and a ping was still going on.
make `SendPingHandler implement Closeable` and then use `IOUtils.close(receivedResponses.values())`