Generate scheduled basals on suspend

@kentquirk 

This PR is for code that will generate scheduled basals on suspend.  

It's broken into two commits, one that is a refactor of the code to do the exact same thing, but with the ability to configure the generation logic a bit more.  This first commit has no changes to unit tests.

The next commit is the introduction of the code to do the handling for suspends along with requisite updates to the unit tests.

I have run this with two users' data and it seems to be working.  We all know that two extends to infinite, so I think we are good ;).