WIP: try to fix get_page_for_position()
Separate IndexError from NoDataError

Otherwise you hide brokenness in the code. It's never clever to re-use
built-in Python exceptions, however nice it looks.
Fix bug when inserting penultimate page
fixup! Separate IndexError from NoDataError
Fix all estimation issues.

Seems to work now in tests. GtkTreeModelLazyShim does not yet handle
'estimated_size_changed' signals, so it's limited to the initial view.
Silence!
EstimationTestSource: play fairer

It's up to the source to reestimate when the view queries near to the last
page. The EstimationTestSource() now does this, revealing more rows each
time more is queried so that it possible to actually know that there is
more data waiting to be queried.
Make get_page_at_position detect last page correctly

The 'last_page' variable is only set if we overestimated the size and
tried to read a page that doesn't exist, but it could also be the case
that we just happened to read a page that was the last page.
Nearly there ... but I can only get to row 94
Make EstimationTestSource a little more friendly to the view.

It should add new estimated rows in 'query_size' chunks.

The 100 row overestimate demo works now!
Add generic tracing metaclass and rework GInterfaceTraceMetaclass
Fix issues in GtkTreeModel shim's row location
Initial sparql-explorer
Various fixes

The EstimationTestSource now demonstrates underestimation correctly.