Replace handling of Datasource.Events.ROW_COUNT_CHANGE.

This event no longer exists, and the datasource will send an INSERT or DELETE
event instead, so we need to handle those instead.
Style the grid cells so they can be themed by users.
Remove Grid.isPartialLastRow().

The semantics were not clear in relation to hidden rows, so we make rows have
"visibility: hidden" instead of "display: none" so that their height is known,
and add (hidden) rows until more clearly-defined conditions are met, so that
we know how far we can scroll the grid and still display all rows on screen.

Update setScroll() and addRow() logic accordingly.
Don't fudge the row data to retrieve to NEW unless necessary.

Otherwise, invalid attempts to retrieve rows outside the valid range might
silently succeed instead of throwing an exception.
Ensure that TestDataSource catches invalid record accesses.
Make the range() function accessible to other tests.