Fully handle settings objects

@kentquirk @jebeck

This PR finishes up the handling of settings objects and changes to settings objects in the carelink driver.

Please give this a once over and let me know if you have any questions.  When reading, might I suggest reading over the entire settings.js file instead of looking at the diff.  It will probably also help to reference the noChanges and withChanges `input.csv` files in the tests to help get a sense of what the input data looks like.
Given the unit tests, no.  But, in real life stuff, yes, I think it's possible for multiple iterations to happen.  That might not be true, but the contract for the method is that it emits all events that should be emitted given the event that was passed to it.  So, in order to correctly implement that contract, the `while` is needed, even if multiple iterations will never happen.