[SPARK-4342] [Core]connection ack timeout improvement, replace Timer with ScheudledExecutor...

* replace java.util.Timer with ScheduledExectorService
* avoid reference to the whole message, use message id only.

I just checked the codes:
```Java
    public ScheduledThreadPoolExecutor(int corePoolSize,
                                       ThreadFactory threadFactory) {
        super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.NANOSECONDS,
              new DelayedWorkQueue(), threadFactory);
    }
```
2 is the least thread number, not the max thread number.