#8 more refactorings
- outdoor DAO also saves the light items to the detail
- frontend changes needed after refactorings and model changes
- controls and sensors now expose isInitiated method too, warnings
  messages consolidated to be common across multiple places
- Gpio control and observable sensors now check each operation for this
  init flag before attempting to do any action
- new tests for DAO added to confirm some new behavior needed (e.g.
  light items are saved in detail)