Completion: weak reference to the view

There was a reference cycle between the view and completion. Now only
the view has a strong reference to the completion. It is more logical
that the view owns the completion, not vice-versa.

This wasn't really a problem as far as the view was added to a
container. Because when the container is destroyed, it calls
gtk_widget_destroy() on its children, which calls g_object_run_dispose()
which breaks the reference cycle.

Anyway, it's better to not rely on gtk_widget_destroy(), and thus avoid
reference cycles in C code.

The drawback is that there are now checks to see if view == NULL, before
using view.
Revert "Prevent construction of completion after dispose has run"

This reverts commit 89382601e772c0504ae7e5f709399f4dd3b0d291.

It was used in get_completion() to prevent the creation of
GtkSourceCompletion if dispose() has already run. But if
get_completion() is called in such a (rare) situation, it means that
GtkSourceView is still alive, and that dispose() will anyway be run a
second time, where g_clear_object() will clear the completion object a
second time if needed.

There was before a reference cycle between the view and completion, now
it is not the case anymore. This was maybe the root of the problem.

I've tested this commit with the following program, and everything is
fine, the completion is created and freed two times.

gint
main (gint argc, gchar *argv[])
{
        GtkSourceView *view;

        gtk_init (&argc, &argv);

        view = GTK_SOURCE_VIEW (gtk_source_view_new ());
        g_object_ref_sink (view);

        gtk_source_view_get_completion (view);

        g_message ("main: run dispose on view");
        g_object_run_dispose (G_OBJECT (view));

        gtk_source_view_get_completion (view);
        g_message ("main: unref view");
        g_object_unref (view);

        return 0;
}
Completion: support changing the view's buffer

The completion is attached to one view, but the view can change its
buffer. This was not supported. Now the notify::buffer signal is
connected.

We take a reference to the buffer.

We now disconnect, block and unblock the signal handlers by function,
not by id.
Completion: override constructed

So in constructed we can use the view property.
Completion: move the code so the prototype is not needed

Just move the class_init() function below constructed(). The diff is
quite ugly, so it is in a separate commit.