Completely rework the timer infrastructure.

The users' interface remains unchanged via the addTimer and removeTimer called, however the system interface is different.

The implementation is such that all operations are O(log n) time instead of the existing code's O(n).
Use the callback reference instead of an executable flag to handle removed timers in a more streamlined manner.
A little bit of code cleaning in the push and pop routines to make things slightly clearer.
Some code clean up in the addTimer function.
Removal of unused imports and locals