renamed, to be a little more consistent (i hope)
(...)
added todo
rewrote the layer-stack implementation

i was going to pull the functionality out into a "flex-array" type, and
use that, but it turned out not to generalize very well.  in the
process, i think i found a cleaner (and smaller) way to do what i was
already doing, so i rewrote the implementation.  i'm planning to rewrite
everything currently using linked-lists to use this type of dynamically
sized array, eventually, in order to save SRAM, but we'll see how that
goes.
(minor aesthetic)
added error checking and stopped implicitly converting -1
changed resize_stack() slightly
(minor: formatting)
(messing with error checking in resize_stack() again)
switched lib/eeprom from linked lists to dynamic arrays
fixed a simple bug; oops
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)