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 felt like `sync` belonged in the data store instead of the light since it is the basis for `names` (and therefore `clear_all`).