Turn timerpool into an instantiable object

This removes the global state involved in the previous implementation of
timerpool. Individual timerpools may be created and managed independently
of one another.
Add timerpool:clear and associated test
Add timerpool:size and associated test
Use timerpool:size in clear test
Merge branch 'feature/timer' into development