The _read_and_store_page() method should never return None

It can raise NoDataError, though.
Realised current approach will never work.

Since GtkTreeView doesn't (and probably can't) expect row-deleted or
row-inserted messages after every query of the model, it doesn't expect
its internal data structures to change mid-function call. However, since
we emit row-inserted and row-deleted whenever we feel like it, its
internal data *does* change under its feet causing segfaults and the
like.

There are a couple of possible solutions:
  - defer emitting row-deleted and row-inserted to an idle callback.
    The question there is, how do we deal with overestimation -- we
    have to pretend to the treeview that some of our rows are in a
    different place, and then reconcile it with reality later. That
    could get complex, if something else gets there first!
  - intercept any events which might trigger GtkTreeView to query the
    model, and execute the expected query manually first so that we emit
    the appropriate row-deleted / row-inserted messages *before*
    GtkTreeView handles the event. That requires a bit of
    second-guessing its behaviour, but that's always going to be the
    case for this crazy hack that I'm trying to implement.