Automatically recover red lights

Fixes #9. See #22 for the first attempt.

This is mostly untested, but I think the basic idea is correct. The data store itself is responsible for determining the color of a light. That way it can do it in an efficient manner.

:pager: @justinsteffy 
I should use `pipelined` instead of `multi`.