Recreate/update sensors based on edited keys.

- Delete synthetic sensors that have period or unit changed
  and create new synthetic sensors
- Copy metadata from original sensor
- Don't fill in upper and lower ts for new synthetic sensors
- Add tests

Fixes #432 
Any time I see a ```(do...``` I think it should probably be a separate function. The commented ```(doseq```s below also feel like they should go into their own functions that have names that reflect what is in the comment. This would hopefully keep the code in better shape over time as we'd probably update the function name, but not the comment if we changed what happened.