finished timer code; now using in main()

untested, but it should work.  i'll test before pushing to github, and
update if i messed anything up
documentation update
fixed a bug... :/

in the while loop in main() that busywaits until we can scan again, the
compiler was optimizing out the function call, it seems like, when i
wrote `(uint8_t)timer__get_milliseconds()`; if i cast the whole
expression (not just the function) to `(volatile uint8_t)`, or if i just
didn't cast anything at all, it worked.  not sure why the compiler would
optimize the function call out like that though, even if it was cast...
this happened when i put it in a for loop too.  i need to research it
just a little more, and write a warning about it in the timer
documentation.