CompletionModel: new implementation

The previous implementation supported several populations of proposals.
Between two populations, the model kept the common proposals, to avoid
emitting useless "row-deleted" and "row-inserted" signals.

But there is a simpler solution. During a population, we remove the
model from the GtkTreeView. So the "row-inserted" and "row-deleted"
signals are not needed. Once the population is finished, we set the
model to the GtkTreeView, so the rows are correctly displayed.

With the new implementation, a model is used for only one population.
When a new population occurs, the old model is destroyed, and we create
a new one. It simplifies a lot the code.

And it's also more efficient, since we avoid completely all the
"row-inserted" and "row-deleted" signals during a population.

I've tested with five providers containing each 10000 proposals. With
the previous implementation, the completion window takes maybe 30
seconds to appear, while with the new implementation, it appears in
approximately one second!

There is still the problem when we change the visible providers. In this
case the "row-deleted" and "row-inserted" signals are emitted. But it
would not be difficult to use the same trick as for the populations.
Free return value of gtk_source_completion_model_get_providers()

In select_provider(), the variable 'providers' was declared a second
time, that's why it's renamed to 'visible_providers'.
test-completion-model: remove the commented tests

All tests are now OK.
Completion: remove begin/end delete signals

It was for performances reasons with the previous model implementation.
Completion: use a new model for each population

At the beginning of a population, we remove the model from the TreeView,
and we destroy it. A new model is created, which is set to the TreeView
only when the population is finished.

When the population is finished, we must also show the completion
window, which is normally done in on_row_inserted_cb(), but the
"row-inserted" signals are not emitted.
Completion: remove model_clear()

We create a new CompletionModel for each population, so clearing the
model is no longer useful.
Completion: remove model_cancel()
Completion: remove model_{begin,end}_populate()

Remove also the tests for multiple populations in the same model. It is
not used anymore.
Completion: replace_model() function
Completion: simplify on_row_inserted_cb()

Now we are sure that the completion window is visible when
on_row_inserted_cb() is called.
Completion: simplify check_first_selected()

No need to reset 'piter' to the first iter, since we already have the
'first' iter.

And priv->select_first is already TRUE, else we wouldn't have selected
the first selectable iter.
Completion: select first proposal when population is done

Indeed, the code was not correct.
Completion: check if the TreeView contains a model
Completion: remove on_row_{inserted,deleted}_cb()

We can call check_first_selected() at other places, if needed.
Completion: select first proposal on "move-page"

When we select another provider with Ctrl+left/right, the first proposal
is selected if needed.
CompletionModel: remove providers-changed signal

It was used only for updating a label, but updating it at the end of the
population is enough.
test-completion-model: test the "row-changed" signal