lib/timer now using dynamic arrays instead of linked lists
finished removing linked lists from the project

the memory overhead of using malloc() is significant, as is the memory
overhead of having a next pointer in each node. dynamic arrays are not
overly difficult to implement, and it's my opinion at the moment that
they should be preferred.
(fixed a comment)