Refactor main app. logic to use new light managers and providers

New behavior contains different providers related to light functionality. Separate "fake" and "real" providers are needed to allow development/testing of app. without needing to run on raspi.