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.
Want to double-check my understanding of the logic here. We get empty array for the `oldSchedule` when `preIndex === range.end` because that means we *didn't* find a `ChangeBasalProfilePatternPre` event, correct?