add more tests and fix more bugs
tests discovered two bugs: section headers were being included in selection change (updated SelectionManager to fix), and we were persisting one extra row if the entire section was out of view (fixed via tablelayout change that checks for this specific case, previously with rows only this couldnt really happen since at least one row was guarenteed to be in view and thus first/lastVisibleChild were accurate values). In the section case, first/lastVisibleChild will be either 0 or last childs index even if the entire section was out of view due to the binary search logic