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 
Oops, I forgot to select only the lights with no failures. That makes the method name `clear_all` misleading.