Support daily and non-repeat calendar entries

This new changes add support for daily and non-repeat types of calendar entry:

- A daily entry is executed at the specified day interval: for example a daily entry with interval of 2 days is executed every other day.

- A non-repeat entry is only executed the day for which it was scheduled.

This change also includes a few other (minor) additions:

- Add flags to enable/disable the rain delay and weather adjustment features. Add quick web API for changing these flags and implement a virtual rain delay button (manual rain delay) for those without a real rain sensor or without Weather Underground account.

- Add web API to force a refresh from Google Calendar and Weather Underground.

- Avoid resetting all zones to 0 at the end of each program step. The code still reset all zones at the end of the program, or if killing the queue. The main goal was to make easier debugging what a program is doing using the bonescript simulation module.

- Some code cleanup in the hardware support modules and in server.js.

(As a side note, I am not sure the rain interrupt callback is of any use. The rain sensor is a status input: it indicates when there is humidity. The system should delay watering as long as rain is detected, not just for a predefined period.)