Represents an instance of scheduled timer for a specific task.
`Timer` instance owns[^own] the space for the task's closure. So when the timer is out of scope, it is forced to stop and
destroy the closure during `Drop` processing.
[^own]: However, `TimerQueue::fire_onshot` does not create `Timer` instance. That's why the function need a `'static`closure lifetime.