Store timer duration in native duration type
Storing duration in doubles is sub-optimal as each cast may incur in truncation. Furthermore, accumulations may also truncate the value further. Using the native value preserves the duration unit user request its value in seconds.
Additionally, this MR adds a proper test to the timer class.