chg fold state from a big tuple to a record
make overflows part of the fold state.  and change it to be an immutable map.  and separate initParent as another chained function out of addKeyToParent.
chg overflows map to use the key as the key instead of the index into the children collection.
convert buildParentPage to accept a list (which for now is being sliced from the children List just before the call) rather than indexes into the children list.  so buildParentPage can use List.iter.
build the items list as we go
so now the old reason we're passing i through the fold is so we can detect the last item.  that seems silly.
extract flushParentPage out of maybeFlushParentPage into its own function
remove the isLastChild logic from the fold functions
since we don't need i in the folder anymore, remove it
when writing parent pages, convert nextGeneration from a mutable list to an F# list which is part of the fold state.