a round of CareLink fixes (suspend/resumes, basals, settings)

@kentquirk @jh-bate This is ready for review, including tests. I'm going to start commenting in line.
This is the most controversial change. Sometimes (albeit probably very rarely), the return to a scheduled basal actually *precedes* the resume event (by a second) in MedT data. So here we fabricate a resume event and save it in `currStatus`, then we get on with our scheduled basal. When we next emit a resume event (see line 465) we check to see if our `currStatus.status` is *already* resumed, and if so, we merge the fabricated resume with the real one and simulate only one.