fix the dates

the main change is updating the window logic to be valid according to
the period that ends N months from the anchor date as per
https://docs.google.com/a/dimagi.com/document/d/1Wu3vZWTbVTYw_oFH10SwgOuY37e7iMyCuHDbyX2zM_E/edit

also includes a fairly sizeable refactor including:
- pull status, preg_month and child_age into properties
- make it clear in the row it is only one month/year
- make datespan calculated from the month/year
- get rid of window entirely
- make end be the first of the next period and update filters to not be inclusive
- fixing all tests
- updating calcs (that i knew about) to correctly handle the new date ranges

the meat is in 5d56c1618ab4b37874da258d29717e28f9917788 and then there's a long tail of test fixes
Looking further, I see this pattern of implicit return `None` is already pretty widely in use in other functions, so maybe not something you care about.