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.
with the new close logic, I'm worried about unneeded warn messages in the logs during shutdown. I wonder if we should add a global close flag to the entire class that can be used to suppress this.