Prevent a crash when there is no datasource

Also, when reloadData isn’t called
Fix a crash when number of row sections is 0
Fix a crash when the row/column counts are negative
Code modernization
New separator API controls