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 
All of the logic below here should be the same between implementations. It should be a method on the base class.