restructured IR receiver code a bit to use event capture instead of polling

also made it tick-rate independent.
pulling more processing out of interrupt handlers (IR parsing in this case)
IR interface only needs a watchdog at timer overflow
playing with protothreads a bit more

rewrote the hand-rolled state machine for parsing NEC IR codes as a linear protothread.
it cost about 50 bytes of program space, but made for a very nice readable flow.
(though the old one was pretty readable too if you grok state machines)