timer : refactor virtual timer

Minimizing the dependence of between generic_timer and timer.
As a result, Unit testing is possible.