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.
maybe make this a `private final AtomicBoolean closed` and in close you can then protect double closing by 

```Java
public void close() {
  if (closed.compareAndSet(false, true)) {
    //do the things
  }
}
```