SearchContext: weak ref to the buffer

The strong ref prevented the buffer from being finalized.
Now the search context has a weak ref to the buffer, and vice versa.

Due to the weak ref, we now have to keep a reference to the tag table,
to be able to remove the found_tag in dispose(). A tag table can be used
for several buffers.

To create a search context, we have to call
gtk_source_search_context_new(), and pass the buffer as an argument.
Another possibility would have been:
- gtk_source_buffer_create_search_context()
- gtk_source_buffer_remove_search_context()
In this case, the buffer can have a strong ref to the search context,
since the search context is explicitely removed from the buffer. But
it's too late for doing that, we have to live with the current API.
textregion: weak ref to the buffer

If the buffer is finalized while the text region is still alive, bad
things happen.
Remove second parameter of gtk_text_region_destroy()

It was a boolean to know if the marks owned by the GtkTextRegion must be
removed from the buffer. In every case we want to remove the marks,
except when the buffer is already finalized, in which case FALSE is
passed as the second parameter.

But now GtkTextRegion has a weak ref to the buffer, so the destroy
function knows when the buffer is finalized.